Variabili d'ambiente: parte I
Un'altra cosa importante che si può fare nel file .bashrc è impostare le variabili d'ambiente. E
che cosa sono? Prendiamola da un'altra direzione: supponiamo che stiate leggendo della documentazione per il programma pippo,
ed incontrate queste frasi:
pippo normalmente cerca il suo file di configurazione, .pipporc , nella home directory dell'utente. Comunque, se la
variabile d'ambiente PIPPOPATH è impostata ad un nome di file diverso, cercherà lì.
Ogni programma viene eseguito in un ambiente definito dalla shell che ha chiamato il programma (Ecco perchè le shell
sono così importanti. Pensate se aveste dovuto passare l'intero ambiente a mano ogni volta che aveste richiamato un programma!).
Si può dire che l'ambiente esiste "all'interno" della shell. I programmatori hanno una routine speciale per porre delle
domande all'ambiente, e il programma pippo usa questa routine: controlla il valore della variabile d'ambiente PIPPOPATH; se la
variabile non è definita, userà semplicemente il file .pipporc nella home directory. Se è definita,
comunque, pippo userà il valore della variabile (che dovrebbe essere il nome di un file che pippo può usare) al posto
del default .frugglerc . Ecco come si può cambiare l'ambiente in bash:
/home/larry# export PGPPATH=/home/larry/secrets/pgp
Si può pensare al comando export come ad un invito: "Per favore, esporta questa variabile all'ambiente,
dove richiamerò i programmi, in modo che il suo valore sia a loro visibile". Ci sono delle buone ragioni per chiamarlo
export , come vedremo poi.
Questa particolare variabile viene usata dal famoso programma di criptazione a chiave pubblica di Phil Zimmerman pgp .
Normalmente pgp cerca determinati file di cui ha bisogno (che contengono le chiavi di criptazione) nella home directory,
e la usa anche per registrare i file temporanei che crea mentre è in funzione. Impostando la variabile PGPPATH a questo valore,
gli ho detto di usare la directory /home/larry/secrets/pgp . Ho dovuto leggere il manuale di pgp per trovare
il nome esatto della variabile e che cosa fa, ma è abbastanza standard l'uso del nome del programma in lettere maiuscole, seguito
dal suffisso "PATH". È anche utile saper chiedere informazioni sull'ambiente:
/home/larry# echo $PGPPATH
/home/larry/.pgp
/home/larry#
Notate il "$": si premette un segno di dollaro al nome di una variabile d'ambiente per estrarre il valore della variabile.
Se aveste scritto il comando senza il segno di dollaro, echo avrebbe semplicemente stampato i suoi argomenti:
/home/larry# echo PGPPATH
PGPPATH
/home/larry#
Il "$" viene usato per valutare le variabili d'ambiente, ma lo fa solo nel contesto della shell, cioè quando è
la shell che interpreta i comandi. Quando è che lo fa? Beh, quando state digitando dei comandi al prompt, o quando bash sta leggendo
dei comandi da un file come .bashrc si può dire che è la shell che "interpreta" i comandi.
C'è un altro comando molto utile per rivolgere domande all'ambiente: env . env elencherà semplicemente
tutte le variabili d'ambiente. È possibile, specialmente se state usando X, che l'elenco scorra fuori dallo schermo; se succede,
mandate l'output di env , con una pipe, a more : env | more .
Alcune di queste variabili sono piuttosto utili, quindi le descriveremo più dettagliatamente. Guardate la tabella seguente.
Variabile |
Contiene |
Esempio |
HOME |
La home directory |
/home/larry |
TERM |
Il tipo di terminale |
xterm , vt100 o console |
SHELL |
Il percorso per la shell |
/bin/bash |
USER |
Il vostro nome di login |
larry |
PATH |
Lista di directory di programmi |
/bin:/usr/bin:/usr/local/bin |
Queste quattro variabili sono definite automaticamente quando fate login: non c'è bisogno di impostarle nei file .bashrc
o .bash_login .
Diamo un'occhiata più da vicino alla variabile TERM. Per capirla, torniamo un attimo alla storia di Unix: il sistema operativo
ha bisogno di conoscere alcune cose sulla vostra console, per poter attivare delle funzioni di base come scrivere un carattere sullo
schermo, spostare il cursore sulla linea seguente, eccetera. Nei primi anni dell'informatica, i produttori di computer aggiungevano
continuamente nuove caratteristiche ai terminali: per prima l'inversione, poi forse i caratteri europei, e alla fine magari anche delle
primitive funzioni grafiche (ricordatevi, ancora non esistevano i sistemi a finestre ed i mouse!). Comunque, tutte queste nuove funzioni
rappresentavano un problema per i programmatori: come potevano sapere quali funzioni aveva un terminale, e quali no? E come potevano
supportare le nuove caratteristiche senza far diventare inutili i vecchi terminali?
In Unix, la risposta a queste domande è stata /etc/termcap . /etc/termcap è un elenco di tutti
i terminali che il vostro sistema conosce, e come controllano il cursore. Se un amministratore di sistema comprava un nuovo tipo di
terminale, tutto quello che doveva fare era aggiungere una voce per quel terminale in /etc/termcap invece di ricompilare
tutto Unix. Talvolta è ancora più facile: lungo la strada, il vt100 della Digital Equipment Corporation è
diventato quasi uno standard, e molti terminali nuovi sono stati costruiti in modo da poterlo emulare, o da potersi comportare come
un vt100 . Sotto Linux, il valore di TERM è talvolta console , che è un terminale di tipo vt100
con delle caratteristiche aggiunte.
|