Ricerca nel sito web

Come impostare e annullare l'impostazione delle variabili d'ambiente locali, utente e di sistema in Linux


Le variabili d'ambiente sono alcune variabili speciali definite nella shell e necessarie ai programmi durante l'esecuzione. Possono essere definiti dal sistema o definiti dall'utente. Le variabili definite dal sistema sono quelle impostate dal sistema e utilizzate dai programmi a livello di sistema.

Per es. Il comando PWD è una variabile di sistema molto comune che viene utilizzata per memorizzare l'attuale directory di lavoro. Le variabili definite dall'utente vengono generalmente impostate dall'utente, temporaneamente per la shell corrente o permanentemente. L'intero concetto di impostare e annullare l'impostazione delle variabili di ambiente ruota attorno ad alcuni insiemi di file, pochi comandi e shell diverse.

In termini più ampi, una variabile di ambiente può essere di tre tipi:

1. Variabile dell'ambiente locale

Uno definito per la sessione corrente. Queste variabili di ambiente durano solo fino alla sessione corrente, che si tratti di una sessione di accesso remoto o di una sessione del terminale locale. Queste variabili non sono specificate in nessun file di configurazione e vengono create e rimosse utilizzando uno speciale set di comandi.

2. Variabile d'ambiente utente

Queste sono le variabili definite per un particolare utente e vengono caricate ogni volta che un utente accede utilizzando una sessione terminale locale o quell'utente accede utilizzando una sessione di accesso remoto. Queste variabili vengono generalmente impostate e caricate dai seguenti file di configurazione: .bashrc, .bash_profile, .bash_login, .profile file presenti nella directory home dell'utente.

3. Variabili d'ambiente a livello di sistema

Queste sono le variabili d'ambiente disponibili a livello di sistema, cioè per tutti gli utenti presenti su quel sistema. Queste variabili sono presenti nei file di configurazione a livello di sistema presenti nelle seguenti directory e file: /etc/environment, /etc/profile, /etc/profile.d /, /etc/bash.bashrc. Queste variabili vengono caricate ogni volta che il sistema viene acceso e registrato localmente o in remoto da qualsiasi utente.

Comprensione dei file di configurazione a livello di utente e di sistema

Qui descriviamo brevemente i vari file di configurazione sopra elencati che contengono variabili d'ambiente, a livello di sistema o specifiche dell'utente.

.bashrc

Questo file è un file specifico dell'utente che viene caricato ogni volta che l'utente crea una nuova sessione locale, ovvero in parole semplici apre un nuovo terminale. Tutte le variabili di ambiente create in questo file avranno effetto ogni volta che viene avviata una nuova sessione locale.

.bash_profile

Questo file è un file di accesso remoto specifico dell'utente. Le variabili d'ambiente elencate in questo file vengono richiamate ogni volta che l'utente accede in remoto, ad esempio utilizzando la sessione ssh. Se questo file non è presente, il sistema cerca i file .bash_login o .profile.

/etc/ambiente

Questo file è un file a livello di sistema per creare, modificare o rimuovere eventuali variabili di ambiente. Le variabili d'ambiente create in questo file sono accessibili in tutto il sistema, da ogni singolo utente, sia localmente che in remoto.

/etc/bash.bashrc

File bashrc a livello di sistema. Questo file viene caricato una volta per ogni utente, ogni volta che l'utente apre una sessione del terminale locale. Le variabili di ambiente create in questo file sono accessibili a tutti gli utenti ma solo tramite la sessione del terminale locale. Quando si accede in remoto a qualsiasi utente su quella macchina tramite una sessione di accesso remoto, queste variabili non sarebbero visibili.

/etc/profilo

File di profilo a livello di sistema. Tutte le variabili create in questo file sono accessibili da ogni utente del sistema, ma solo se la sessione di quell'utente viene richiamata in remoto, ovvero tramite accesso remoto. Qualsiasi variabile in questo file non sarà accessibile per la sessione di accesso locale, ovvero quando l'utente apre un nuovo terminale sul suo sistema locale.

Nota: le variabili di ambiente create utilizzando file di configurazione a livello di sistema o a livello di utente possono essere rimosse rimuovendole solo da questi file. Solo che dopo ogni modifica in questi file, disconnettersi e accedere di nuovo o semplicemente digitare il seguente comando sul terminale affinché le modifiche abbiano effetto:

source <file-name>

Imposta o annulla l'impostazione delle variabili d'ambiente locali o a livello di sessione in Linux

Le variabili di ambiente locale possono essere create utilizzando i seguenti comandi:

var=value 
OR
export var=value

Queste variabili riguardano l'intera sessione e sono valide solo per la sessione terminale corrente. Per cancellare queste variabili di ambiente a livello di sessione è possibile utilizzare i seguenti comandi:

1. Utilizzando env

Per impostazione predefinita, il comando "env" elenca tutte le variabili di ambiente correnti. Ma, se utilizzato con l'opzione '-i', cancella temporaneamente tutte le variabili di ambiente e consente all'utente di eseguire un comando nella sessione corrente in assenza di tutte le variabili di ambiente.

env –i [Var=Value]… command args…

Qui, var=value corrisponde a qualsiasi variabile di ambiente locale che desideri utilizzare solo con questo comando.

env –i bash

Fornirà una shell bash che temporaneamente non avrà nessuna variabile d'ambiente. Ma, quando esci dalla shell, tutte le variabili verranno ripristinate.

2. Utilizzo del disinserimento

Un altro modo per cancellare la variabile di ambiente locale è utilizzare il comando unset. Per disattivare temporaneamente qualsiasi variabile di ambiente locale,

unset <var-name>

Dove var-name è il nome della variabile locale che desideri annullare o cancellare.

3. Imposta il nome della variabile su "

Un altro modo meno comune sarebbe impostare il nome della variabile che si desidera cancellare su '' (Vuoto). Ciò cancellerebbe il valore della variabile locale per la sessione corrente per la quale è attiva.

NOTA – PUOI ANCHE GIOCARE E MODIFICARE I VALORI DELLE VARIABILI DI SISTEMA O AMBIENTE UTENTE, MA I CAMBIAMENTI SI RIFLETTEREBBERO SOLO NELLA SESSIONE DEL TERMINALE CORRENTE E NON SAREBBERO PERMANENTI.

Scopri come creare variabili d'ambiente a livello di utente e di sistema in Linux

Nella sezione, impareremo come impostare o annullare l'impostazione delle variabili di ambiente locali, utente e di sistema in Linux con gli esempi seguenti:

1. Imposta e annulla l'impostazione delle variabili locali in Linux

a.) Qui creiamo una variabile locale VAR1 e la impostiamo su qualsiasi valore. Quindi usiamo unset per rimuovere quella variabile locale e alla fine quella variabile viene rimossa.

VAR1='TecMint is best Site for Linux Articles'
echo $VAR1
unset VAR1
echo $VAR1

b.) Un altro modo per creare una variabile locale è utilizzare il comando export. La variabile locale creata sarà disponibile per la sessione corrente. Per disattivare la variabile è sufficiente impostare il valore della variabile su ''.

export VAR='TecMint is best Site for Linux Articles'
echo $VAR
VAR=
echo $VAR

c.) Qui abbiamo creato una variabile locale VAR2 e l'abbiamo impostata su un valore. Quindi, per eseguire un comando che cancella temporaneamente tutte le variabili locali e di altro ambiente, abbiamo eseguito il comando 'env –i'. Questo comando qui ha eseguito la shell bash cancellando tutte le altre variabili di ambiente. Dopo aver inserito 'exit' sulla shell bash invocata, tutte le variabili verranno ripristinate.

VAR2='TecMint is best Site for Linux Articles'
echo $VAR2
env -i bash
echo $VAR2   

2. Impostare e annullare l'impostazione delle variabili d'ambiente a livello utente in Linux

a.) Modifica il file .bashrc nella tua directory home per esportare o impostare la variabile di ambiente che devi aggiungere. Dopodiché sorgente il file, per rendere effettive le modifiche. Quindi vedresti che la variabile ('CD' nel mio caso) ha effetto. Questa variabile sarà disponibile ogni volta che apri un nuovo terminale per questo utente, ma non per le sessioni di accesso remoto.

vi .bashrc

Aggiungi la seguente riga al file .bashrc in fondo.

export CD='This is TecMint Home'

Ora esegui il comando seguente per apportare nuove modifiche e testarlo.

source .bashrc 
echo $CD

Per rimuovere questa variabile, rimuovi semplicemente la seguente riga nel file .bashrc e re-source:

b.) Per aggiungere una variabile che sarà disponibile per le sessioni di accesso remoto (ad esempio quando si accede tramite ssh all'utente dal sistema remoto), modificare il file .bash_profile.

vi .bash_profile

Aggiungi la seguente riga al file .bash_profile in fondo.

export VAR2='This is TecMint Home'

Quando si acquisisce questo file, la variabile sarà disponibile quando si invia ssh a questo utente, ma non all'apertura di un nuovo terminale locale.

source .bash_profile 
echo $VAR2

Qui, VAR2 non è inizialmente disponibile ma, eseguendo ssh all'utente su localhost, la variabile diventa disponibile.

ssh tecmint@localhost
echo $VAR2

Per rimuovere questa variabile, rimuovi semplicemente la riga nel file .bash_profile che hai aggiunto e reimposta il file.

NOTA: queste variabili saranno disponibili ogni volta che accedi all'utente corrente ma non per gli altri utenti.

3. Impostare e annullare l'impostazione delle variabili d'ambiente a livello di sistema in Linux

a.) Per aggiungere una variabile di non accesso a livello di sistema (ovvero una variabile disponibile per tutti gli utenti quando qualcuno di loro apre un nuovo terminale ma non quando si accede in remoto a qualsiasi utente della macchina) aggiungere la variabile a /etc/bash.bashrc.

export VAR='This is system-wide variable'

Successivamente, procurati il file.

source /etc/bash.bashrc 

Ora questa variabile sarà disponibile per ogni utente quando aprirà un nuovo terminale.

echo $VAR
sudo su
echo $VAR
su -
echo $VAR

Qui, la stessa variabile è disponibile per l'utente root così come per l'utente normale. Puoi verificarlo accedendo ad un altro utente.

b.) Se desideri che qualsiasi variabile di ambiente sia disponibile quando un utente sul tuo computer ha effettuato l'accesso in remoto, ma non all'apertura di un nuovo terminale sul computer locale, devi modificare il file – '/etc/profile'.

export VAR1='This is system-wide variable for only remote sessions'

Dopo aver aggiunto la variabile, è sufficiente reimpostare il file. Quindi la variabile sarebbe disponibile.

source /etc/profile
echo $VAR1

Per rimuovere questa variabile, rimuovere la riga dal file /etc/profile e reimpostarla.

c.) Tuttavia, se desideri aggiungere qualsiasi ambiente che desideri sia disponibile in tutto il sistema, sia nelle sessioni di accesso remoto che nelle sessioni locali (ovvero l'apertura di una nuova finestra di terminale) per tutti utenti, basta esportare la variabile nel file /etc/environment.

export VAR12='I am available everywhere'

Dopodiché basta procurarsi il file e le modifiche avranno effetto.

source /etc/environment
echo $VAR12
sudo su
echo $VAR12
exit
ssh localhost
echo $VAR12

Qui, come vediamo, la variabile d'ambiente è disponibile per l'utente normale, l'utente root e per la sessione di accesso remoto (qui, a localhost).

Per cancellare questa variabile, basta rimuovere la voce nel file /etc/environment e reimpostarla o effettuare nuovamente l'accesso.

NOTA: le modifiche diventano effettive quando si origina il file. In caso contrario, potrebbe essere necessario disconnettersi e accedere nuovamente.

Conclusione

Pertanto, questi sono alcuni modi in cui possiamo modificare le variabili di ambiente. Se trovi trucchi nuovi e interessanti per lo stesso, menzionali nei tuoi commenti.