|
1.
Variabile d'ambiente
Cosa sono
Una variabile ambiente è un oggetto nominale che contiene informazioni usate da
una o più applicazioni. Questo risulta essere un po' misterioso o di difficile
gestione da parte di molti utenti, specialmente coloro che si avvicinano per la
prima volta a Linux. L'uso di variabili ambiente, invece, può facilitare la
modifica della configurazione per una o più applicazioni.
Esempi importanti
Segue una tabella con la lista delle variabili usate su un sistema Linux e la
loro descrizione. I valori di esempio sono presentati di seguito.
| Variabile |
Descrizione |
| PATH |
Variabile che contiene una lista di directory, separate dai due punti (:),
nelle quali il sistema cerca file eseguibili. Se si digita un comando (come
ls, rc-update o emerge) che non è presente nella lista,
il sistema non può essere in grado di eseguirlo, a meno che non si digiti il
comando preceduto da tutto il percorso, come /bin/ls.
|
| ROOTPATH |
Variabile che ha la stessa funzione di PATH, con la sola differenza
che le directory specificano il percorso di ricerca per comandi digitati
dall'utente root.
|
| LDPATH |
Variabile che contiene la lista di directory, separate dai due punti (:),
per la ricerca delle librerie da parte del linker dinamico.
|
| MANPATH |
Variabile che contiene la lista di directory, separate dai due punti (:),
per la ricerca delle pagine man da parte del comando man.
|
| INFODIR |
Variabile che contiene la lista di directory, separate dai due punti (:),
per la ricerca delle pagine info da parte del comando info.
|
| PAGER |
Variabile che contiene il percorso del programma usato per visualizzare il
contenuto di file di testo (come less o more).
|
| EDITOR |
Variabile che contiene il percorso del programma usato per modificare
il contenuto di file di testo (come nano o vi).
|
| KDEDIRS |
Variabile che contiene la lista di directory, separate dai due punti (:),
nelle quali si trova materiale specifico per KDE.
|
| CONFIG_PROTECT |
Variabile che contiene la lista di directory, separate da spazi, che
vengono protette durante il processo di aggiornamento del sistema da parte
del Portage.
|
| CONFIG_PROTECT_MASK |
Variabile che contiene la lista di directory, separate da spazi,
che non dovranno essere protette durante il processo di aggiornamento del
sistema da parte del Portage.
|
Segue un esempio di definizione di tutte queste variabili:
Codice 1.1: Esempio di definizioni |
PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
/usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
/usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf"
|
1.
Definire variabili globali
La directory /etc/env.d
Per centralizzare la definizione di queste variabili, è stata introdotta in
Gentoo la directory /etc/env.d. All'interno di questa directory si
trovano un certo numero di file, come 00basic, 05gcc,
ecc. che contengono le variabili necessarie alle applicazioni menzionate nel
nome del file.
Per maggiore chiarezza; quando si installa il gcc, viene anche creato
dall'ebuild un file chiamato 05gcc, che contiene la definizione
delle seguenti variabili:
Codice 1.1: /etc/env.d/05gcc |
PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info"
CC="gcc"
CXX="g++"
LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
|
In altre distribuzioni la definizione di variabili ambiente viene fatta con
modifiche o aggiunte al file /etc/profile o ad altre locazioni.
D'altra parte l'uso di Gentoo facilita la manutenzione e la gestione delle
variabili ambiente, dato che non occorre fare attenzione ai numerosi file che
possono contenere variabili ambiente.
Per esempio, durante l'aggiornamento del gcc viene anche aggiornato il
file /etc/env.d/05gcc senza nessuna richiesta di interazione da
parte dell'utente.
Di questo sono beneficiari il Portage e anche l'utente. Occasionalmente potrebbe
nascere l'esigenza di configurare una variabile ambiente a livello globale.
Prendiamo per esempio la variabile http_proxy. Invece di modificare
l'/etc/profile, basta creare un file
/etc/env.d/99local, e inserire la seguente definizione:
Codice 1.1: /etc/env.d/99local |
http_proxy="proxy.server.com:8080"
|
L'uso dello stesso file per tutte le variabili utente, aiuta ad avere una
panoramica delle variabili definite in seguito dall'utente stesso.
Lo script env-update
Alcuni file in /etc/env.d definiscono la variabile PATH.
L'esecuzione di env-update appende le diverse definizioni prima di
aggiornare le variabili ambiente, rendendo semplice l'aggiunta di variabili
ambiente ai pacchetti (o agli utenti) senza interferire con i valori già
presenti.
Lo script env-update appende i valori dei file in /etc/env.d
in ordine alfabetico. I nomi dei file devono iniziare con due cifre decimali.
Codice 1.1: Ordine di aggiornamento di env-update |
00basic 99kde-env 99local
+-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"
|
La concatenazione di variabili non è sempre possibile, la si può ottenere con
le seguentI: ADA_INCLUDE_PATH, ADA_OBJECTS_PATH,
CLASSPATH, KDEDIRS, PATH, LDPATH,
MANPATH, INFODIR, INFOPATH, ROOTPATH,
CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH,
PRELINK_PATH_MASK, PKG_CONFIG_PATH e PYTHONPATH.
Per tutte le altre variabili è usato l'ultimo valore
definito (in ordine alfabetico dei file in /etc/env.d).
Puoi aggiungere più variabili in questa list di variabili concatenate aggiungendo
il nome della variabile a una tra: COLON_SEPARATED o SPACE_SEPARATED
(anche dentro un file env.d).
Durante l'esecuzione di env-update vengono create tutte le variabili
ambiente e verranno poste in /etc/profile.env (usato a sua volta da
/etc/profile). Vengono inoltre estratte le informazioni dalla
variabile LDPATH per creare il file /etc/ld.so.conf. Dopo di
che, viene eseguito il comando ldconfig per ricreare il file
/etc/ld.so.cache usato dal linker dinamico.
Per vedere l'effetto immediato di env-update dopo il suo uso, eseguire il
seguente comando per aggiornare l'ambiente. Utenti che hanno installato Gentoo,
si ricordano probabilmente questo dalle istruzioni di installazione:
Codice 1.1: Aggiornare l'ambiente |
# env-update && source /etc/profile
|
Nota:
Il comando precedente aggiorna solo le variabili nel terminale corrente e nelle
nuove console. Se si sta lavorando in X11 si dovrà digitare source
/etc/profile in ogni altro terminale che si aprirà o se si riavvierà X così
che tutti i nuovi terminali abbiano le nuove variabili. Se si usa un login
manager passare a root e digitare /etc/init.d/xdm restart. Saltando
questo ultimo comando si dovrà fare il logout e di nuovo il login per X per
ottenere i nuovi valori delle variabili.
|
Importante:
Non è possibile sfruttare le variabili della shell quando vengono definite altre
variabili. Questo significa che cose come FOO="$BAR" (dove $BAR è
un'altra variabile) non sono permesse.
|
1.
Definire variabili locali
Specifiche dell'utente
Non sempre è conveniente definire variabili ambiente a livello globale. Per
esempio, l'aggiunta di /home/mioutente/bin e la attuale directory
(quella in cui ci si trova) alla variabile PATH non dovrebbe riflettersi
su tutti gli altri utenti. E' necessario definire una variabile ambiente locale
e per questo occorre usare i file ~/.bashrc o
~/.bash_profile:
Codice 1.1: Estendere PATH per uso locale in ~/.bashrc |
PATH="${PATH}:/home/mioutente/bin"
|
Dopo un nuovo login, la variabile PATH viene aggiornata.
Specifiche alla sessione
A volte sono necessarie anche definizioni più ristrette. Potrebbe essere il caso
in cui è necessario usare file binari di una directory temporanea senza usare il
percorso dei binari di sistema o senza modificare ~/.bashrc per la
temporaneità dell'uso.
In questo caso si può definire la variabile PATH nella sessione corrente
usando il comando export. Finché non si esegue un'operazione di logout,
la variabile PATH manterrà la configurazione temporanea.
Codice 1.1: Definire una variabile ambiente specifica per una sessione |
# export PATH="${PATH}:/home/my_user/tmp/usr/bin"
|
|