GNU/Linux >> Linux Esercitazione >  >> Linux

Come impostare ed elencare le variabili di ambiente in Linux

Nei sistemi basati su Linux e Unix le variabili di ambiente sono un insieme di valori dinamici denominati, archiviati all'interno del sistema che vengono utilizzati dalle applicazioni avviate in shell o subshell. In parole semplici, una variabile di ambiente è una variabile con un nome e un valore associato.

Le variabili di ambiente consentono di personalizzare il funzionamento del sistema e il comportamento delle applicazioni sul sistema. Ad esempio, la variabile di ambiente può memorizzare informazioni sull'editor di testo o sul browser predefinito, il percorso dei file eseguibili o le impostazioni locali del sistema e layout della tastiera.

In questa guida spiegheremo come leggere e impostare le variabili di ambiente e shell.

Variabili d'ambiente e variabili Shell #

Le variabili hanno il seguente formato:

KEY=value
KEY="Some other value"
KEY=value1:value2
  • I nomi delle variabili fanno distinzione tra maiuscole e minuscole. Per convenzione, le variabili di ambiente dovrebbero avere nomi MAIUSCOLI.
  • Quando si assegnano più valori alla variabile, questi devono essere separati dai due punti : carattere.
  • Non c'è spazio intorno a = simbolo.

Le variabili possono essere classificate in due categorie principali, variabili di ambiente e variabili di shell.

Variabili d'ambiente sono variabili disponibili a livello di sistema e ereditate da tutti i processi e le shell figlio generati.

Variabili shell sono variabili che si applicano solo all'istanza della shell corrente. Ogni shell come zsh e bash , ha il proprio insieme di variabili shell interne.

Sono disponibili diversi comandi che consentono di elencare e impostare variabili di ambiente in Linux:

  • env – Il comando consente di eseguire un altro programma in un ambiente personalizzato senza modificare quello corrente. Se utilizzato senza un argomento, stamperà un elenco delle variabili di ambiente correnti.
  • printenv – Il comando stampa tutte o le variabili di ambiente specificate.
  • set – Il comando imposta o annulla l'impostazione delle variabili della shell. Se utilizzato senza un argomento, stamperà un elenco di tutte le variabili comprese le variabili di ambiente e shell e le funzioni della shell.
  • unset – Il comando elimina le variabili di shell e di ambiente.
  • export – Il comando imposta le variabili di ambiente.

Elenca variabili d'ambiente #

Il comando più utilizzato per visualizzare le variabili d'ambiente è printenv . Se il nome della variabile viene passato come argomento al comando, viene visualizzato solo il valore di quella variabile. Se non viene specificato alcun argomento, printenv stampa un elenco di tutte le variabili d'ambiente, una variabile per riga.

Ad esempio, per visualizzare il valore di HOME variabile di ambiente da eseguire:

printenv HOME

L'output stamperà il percorso dell'utente attualmente connesso:

/home/linuxize

Puoi anche passare più di un argomento a printenv comando:

printenv LANG PWD
en_US
/home/linuxize

Se esegui printenv o env comando senza argomenti mostrerà un elenco di tutte le variabili di ambiente:

printenv

L'output sarà simile a questo:

LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35;...
LESSCLOSE=/usr/bin/lesspipe %s %s
LANG=en_US
S_COLORS=auto
XDG_SESSION_ID=5
USER=linuxize
PWD=/home/linuxize
HOME=/home/linuxize
SSH_CLIENT=192.168.121.1 34422 22
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
SSH_TTY=/dev/pts/0
MAIL=/var/mail/linuxize
TERM=xterm-256color
SHELL=/bin/bash
SHLVL=1
LANGUAGE=en_US:
LOGNAME=linuxize
XDG_RUNTIME_DIR=/run/user/1000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
LESSOPEN=| /usr/bin/lesspipe %s
_=/usr/bin/printenv

Di seguito sono elencate alcune delle variabili di ambiente più comuni:

  • USER - L'utente attualmente connesso.
  • HOME - La home directory dell'utente corrente.
  • EDITOR - L'editor di file predefinito da utilizzare. Questo è l'editor che verrà utilizzato quando digiti edit nel tuo terminale.
  • SHELL - Il percorso della shell dell'utente corrente, come bash o zsh.
  • LOGNAME - Il nome dell'utente corrente.
  • PATH - Un elenco di directory da cercare durante l'esecuzione dei comandi. Quando esegui un comando, il sistema cercherà quelle directory in questo ordine e utilizzerà il primo eseguibile trovato.
  • LANG - Le impostazioni locali correnti.
  • TERM - L'attuale emulazione di terminale.
  • MAIL - Posizione in cui è archiviata la posta dell'utente corrente.

Il printenv e env i comandi stampano solo le variabili di ambiente. Se vuoi ottenere un elenco di tutte le variabili, inclusi ambiente, shell e variabili e funzioni della shell puoi usare il set comando:

set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()

Il comando visualizzerà un ampio elenco di tutte le variabili, quindi probabilmente vorrai reindirizzare l'output a less comando.

set | less

Puoi anche usare il comando echo per stampare una variabile di shell. Ad esempio, per stampare il valore di BASH_VERSION variabile da eseguire:

echo $BASH_VERSION
4.4.19(1)-release

Impostazione delle variabili d'ambiente #

Per illustrare meglio la differenza tra le variabili Shell e Environment, inizieremo con l'impostazione delle variabili Shell per poi passare alle variabili Environment.

Per creare una nuova variabile di shell con il nome MY_VAR e valore Linuxize digita semplicemente:

MY_VAR='Linuxize'

Puoi verificare che la variabile sia impostata utilizzando echo $MY_VAR di filtrare l'output del comando set con grepset | grep MY_VAR :

echo $MY_VAR
Linuxize

Usa printenv comando per verificare se questa variabile è una variabile di ambiente o meno:

printenv MY_VAR

L'output sarà vuoto, il che ci dirà che la variabile non è una variabile di ambiente.

Puoi anche provare a stampare la variabile in una nuova shell e otterrai un output vuoto.

bash -c 'echo $MY_VAR'

L'export comando viene utilizzato per impostare le variabili d'ambiente.

Per creare una variabile d'ambiente è sufficiente esportare la variabile shell come variabile d'ambiente:

export MY_VAR

Puoi verificarlo eseguendo:

printenv MY_VAR
Linuxize

Se provi a stampare la variabile in una nuova shell questa volta otterrai il nome della variabile stampato sul tuo terminale:

bash -c 'echo $MY_VAR'
Linuxize

Puoi anche impostare le variabili di ambiente in una singola riga:

export MY_NEW_VAR="My New Var"

Le variabili d'ambiente create in questo modo sono disponibili solo nella sessione corrente. Se apri una nuova shell o se esci, tutte le variabili andranno perse.

Variabili d'ambiente persistenti #

Per rendere persistenti le variabili di ambiente è necessario definire tali variabili nei file di configurazione di bash. Nella maggior parte delle distribuzioni Linux, quando avvii una nuova sessione, le variabili di ambiente vengono lette dai seguenti file:

  • /etc/environment - Utilizzare questo file per impostare le variabili di ambiente a livello di sistema. Le variabili in questo file sono impostate nel seguente formato:

    FOO=barVAR_TEST="Test Var"
  • /etc/profile - Le variabili impostate in questo file vengono caricate ogni volta che viene inserita una shell di accesso bash. Quando si dichiarano le variabili di ambiente in questo file è necessario utilizzare export comando:

    export JAVA_HOME="/path/to/java/home"export PATH=$PATH:$JAVA_HOME/bin
  • File di configurazione specifici della shell per utente. Ad esempio, se stai usando Bash, puoi dichiarare le variabili in ~/.bashrc :

    export PATH="$HOME/bin:$PATH"

Per caricare le nuove variabili d'ambiente nella sessione della shell corrente, usa il source comando:

source ~/.bashrc

Conclusione #

In questa guida, ti abbiamo mostrato come impostare ed elencare le variabili di ambiente e shell.

Sentiti libero di lasciare un commento in caso di domande.


Linux
  1. Come impostare e annullare l'impostazione di variabili di ambiente locali, utente e a livello di sistema in Linux

  2. Come gestire ed elencare i servizi in Linux

  3. Come impostare, elencare e rimuovere variabili d'ambiente in Linux

  4. Variabili d'ambiente utente con "su" e "sudo" in Linux

  5. Come stampare variabili d'ambiente apparentemente nascoste?

Come impostare ed elencare variabili ambientali in Linux

Come impostare/disimpostare le variabili d'ambiente in Linux

Come elencare utenti e gruppi su Linux

Come impostare data e ora su Linux

Come impostare e annullare l'impostazione delle variabili di ambiente su Linux

Variabili d'ambiente Linux