Cerca nel sito:
ricerca
avanzata

Frasi Celebri...

La societ? ha inizio a partire da due individui, quando il rapporto tra questi individui modifica il loro comportamento.

Jean Piaget 

Sondaggio:

Secondo voi i No Global...

non hanno niente da fare
si battono per i pi? deboli
creano solo problemi
dicono cose in parte vere e in parte no
hanno idee che condivido pienamente
andrebbero sbattuti in galera tutti
io sono un No Global!

visualizza risultati


 

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.

 

successivo
–«  INDICE  »–

 

 

 

 
Powered by paper&pencil (carta&matita ) - Copyright © 2001-2019 Cataldo Sasso