Panoramica

In questo tutorial, imparerete come impostare le variabili d’ambiente in Ubuntu, CentOS, Red Hat, praticamente qualsiasi distribuzione Linux per un singolo utente e globalmente per tutti gli utenti. Imparerete anche come elencare tutte le variabili d’ambiente e come annullare (cancellare) le variabili d’ambiente esistenti.

Le variabili d’ambiente sono comunemente usate all’interno della shell Bash. È anche un mezzo comune per configurare i servizi e gestire i segreti delle applicazioni web.

Non è raro che le informazioni specifiche dell’ambiente, come gli endpoint e le password, per esempio, siano memorizzate come variabili d’ambiente su un server. Sono anche usati per impostare le posizioni delle directory importanti per molti pacchetti popolari, come JAVA_HOME per Java.

Impostare una variabile d’ambiente

Per impostare una variabile d’ambiente si usa il comando export. Diamo alla variabile un nome, che è quello che viene usato per accedervi negli script di shell e nelle configurazioni e poi un valore per contenere qualsiasi dato sia necessario nella variabile.

export NAME=VALUE

Per esempio, per impostare la variabile d’ambiente per la directory home di un’installazione manuale di OpenJDK 11, useremo qualcosa di simile a quanto segue.

export JAVA_HOME=/opt/openjdk11

Per emettere il valore della variabile d’ambiente dalla shell, usiamo il comando echo e anteponiamo al nome della variabile il segno del dollaro ($).

echo $JAVA_HOME

E finché la variabile ha un valore, questo verrà emesso. Se non è impostato alcun valore, verrà invece visualizzata una riga vuota.

Non impostare una variabile d’ambiente

Per annullare una variabile d’ambiente, che ne rimuove l’esistenza, si usa il comando unset. Sostituire semplicemente la variabile d’ambiente con una stringa vuota non la rimuoverà, e nella maggior parte dei casi causerà probabilmente problemi con gli script o le applicazioni che si aspettano un valore valido.

La seguente sintassi è usata per deselezionare una variabile d’ambiente

unset VARIABLE_NAME

Ad esempio, per deselezionare la variabile d’ambiente JAVA_HOME, useremo il seguente comando.

unset JAVA_HOME

Elenco di tutte le variabili d’ambiente impostate

Per elencare tutte le variabili d’ambiente, usiamo semplicemente il comando set senza alcun argomento.

set

Un esempio di output sarebbe simile al seguente, che è stato tagliato per brevità.

BASH=/bin/bashBASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:globasciiranges:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=(="0") BASH_ARGV=() BASH_CMDS=() BASH_COMPLETION_VERSINFO=(="2" ="8") BASH_LINENO=() BASH_SOURCE=() BASH_VERSINFO=(="5" ="0" ="3" ="1" ="release" ="x86_64-pc-linux-gnu") BASH_VERSION='5.0.3(1)-release' COLUMNS=208 DIRSTACK=() EUID=1000 GROUPS=() HISTCONTROL=ignoreboth HISTFILE=/home/ubuntu/.bash_history HISTFILESIZE=2000 HISTSIZE=1000 HOME=/home/ubuntu HOSTNAME=ubuntu1904 HOSTTYPE=x86_64 IFS=$' \t\n' LANG=en_US.UTF-8 LESSCLOSE='/usr/bin/lesspipe %s %s' LESSOPEN='| /usr/bin/lesspipe %s' LINES=54

Variabili d’ambiente esistenti per un utente

Quando una variabile d’ambiente viene impostata dalla shell utilizzando il comando export, la sua esistenza termina quando la sessione dell’utente termina. Questo è problematico quando abbiamo bisogno che la variabile persista attraverso le sessioni.

Per rendere persistente un ambiente per un utente, esportiamo la variabile dallo script del profilo dell’utente.

  1. Aprire il profilo dell’utente corrente in un editor di testo
    vi ~/.bash_profile
  2. Aggiungi il comando export per ogni variabile d’ambiente che vuoi persistere.
    export JAVA_HOME=/opt/openjdk11
  3. Salva le tue modifiche.

Aggiungere la variabile d’ambiente al profilo bash di un utente da solo non la esporterà automaticamente. Tuttavia, la variabile sarà esportata la prossima volta che l’utente farà il login.

Per applicare immediatamente tutte le modifiche a bash_profile, usa il comando source.

source ~/.bash_profile

Export Environment Variable

Export è un comando integrato nella shell di Bash che viene usato per esportare una variabile d’ambiente per permettere ai nuovi processi figli di ereditarla.

Per esportare una variabile d’ambiente si esegue il comando export mentre si imposta la variabile.

export MYVAR="my variable value"

Possiamo visualizzare una lista completa delle variabili d’ambiente esportate eseguendo il comando export senza argomenti.

export
SHELL=/bin/zshSHLVL=1SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.1pB5Pry8Id/ListenersTERM=xterm-256colorTERM_PROGRAM=vscodeTERM_PROGRAM_VERSION=1.48.2

Per visualizzare tutte le variabili esportate nella shell corrente si usa il flag -p con export.

export -p

Impostare variabili d’ambiente globali permanenti per tutti gli utenti

Una variabile d’ambiente permanente che persiste dopo un riavvio può essere creata aggiungendola al profilo di default. Questo profilo è caricato da tutti gli utenti del sistema, inclusi gli account di servizio.

Tutte le impostazioni globali del profilo sono memorizzate in /etc/profile. E mentre questo file può essere modificato directory, si raccomanda in realtà di memorizzare le variabili d’ambiente globali in una directory chiamata /etc/profile.d, dove si trova un elenco di file che vengono utilizzati per impostare le variabili d’ambiente per l’intero sistema.

  1. Creare un nuovo file sotto /etc/profile.d per memorizzare le variabili d’ambiente globali. Il nome del file dovrebbe essere contestuale in modo che gli altri possano capire il suo scopo. Per le dimostrazioni, creeremo una variabile d’ambiente permanente per HTTP_PROXY.
    sudo touch /etc/profile.d/http_proxy.sh
  2. Aprire il profilo predefinito in un editor di testo.
    sudo vi /etc/profile.d/http_proxy.sh
  3. Aggiungere nuove righe per esportare le variabili d’ambiente
    export HTTP_PROXY=http://my.proxy:8080

    export HTTPS_PROXY=https://my.proxy:8080

    export NO_PROXY=localhost,::1,.example.com
  4. Salvare le modifiche e uscire dall’editor di testo

Conclusione

Questo tutorial ha coperto come impostare e deselezionare le variabili d’ambiente per tutte le distribuzioni Linux, da Debian a Red Hat. Hai anche imparato come impostare le variabili d’ambiente per un singolo utente, così come per tutti gli utenti.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *