Handbook:Parts/Working/EnvVar/it

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:Parts/Working/EnvVar and the translation is 45% complete.
Outdated translations are marked like this.

Introduzione

Una variabile d'ambiente è un oggetto denominato che contiene informazioni utilizzate da una o più applicazioni. Molti utenti (e specialmente quelli nuovi su Linux) lo trovano un po' strano o ingestibile. Tuttavia, questo è un errore: utilizzando le variabili d'ambiente si può facilmente modificare un'impostazione di configurazione per una o più applicazioni.

Esempi importanti

La seguente tabella elenca numerose variabili usate da un sistema Linux descrivendone il loro uso. Dopo la tabella vengono presentati dei valori di esempio.

Variabile Descrizione
PATH Questa variabile contiene un elenco di cartelle separate dai due punti in cui il sistema cercherà i file eseguibili. Se viene inserito il nome di un eseguibile (come ls, rc-update o emerge) ma questo eseguibile non si trova in una delle cartelle elencate, allora il sistema non lo eseguirà (a meno che non venga immesso il percorso completo nel comando, come /bin/ls).
ROOTPATH Questa variabile ha la stessa funzione di PATH, ma elenca solo le cartelle che andranno controllate quando l'utente root (radice) immette un comando.
LDPATH Questa variabile contiene un elenco di cartelle separate dai due punti in cui il linker dinamico cerca per trovare una libreria.
MANPATH Questa variabile contiene un elenco di cartelle separate dai due punti in cui il comando man cerca le pagine man (manuale).
INFODIR Questa variabile contiene un elenco di cartelle separate dai due punti in cui il comando info cerca le pagine di informazione.
PAGER Questa variabile contiene il percorso al programma usato per elencare il contenuto dei file (come less o more).
EDITOR Questa variabile contiene il percorso al programma utilizzato per modificare il contenuto dei file (come nano o vi).
KDEDIRS Questa variabile contiene un elenco di cartelle separate dai due punti che contengono materiale specifico per KDE.
CONFIG_PROTECT Questa variabile contiene un elenco di cartelle delimitate da spazi che saranno protette da Portage durante gli aggiornamenti.
CONFIG_PROTECT_MASK Questa variabile contiene un elenco di cartelle delimitate da spazi che non saranno protette da Portage durante gli aggiornamenti.

Di seguito è riportato un esempio di definizione per tutte queste variabili:

CODE Impostazioni di esempio per le variabili citate
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"

Definire le variabili globalmente

La cartella env.d

Per centralizzare le definizioni di queste variabili, Gentoo ha introdotto la cartella /etc/env.d/. All'interno di questa cartella sono disponibili numerosi file, come 00basic, 05gcc, ecc., che contengono le variabili necessarie all'applicazione menzionata nel nome stesso del file.

Per esempio, quando gcc risulta installato, un file chiamato 05gcc è stato creato da ebuild, il quale contiene le definizioni delle seguenti variabili:

FILE /etc/env.d/05gccVariabili d'ambiente predefinite abilitate per gcc
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"

Altre distribuzioni potrebbero indicare ai loro utenti di modificare o aggiungere queste variabili d'ambiente su /etc/profilo o su altre posizioni. Gentoo, d'altro canto, rende facile per l'utente (e per Portage) mantenere e gestire le variabili d'ambiente senza dover prestare attenzione ai numerosi file che possono contenere queste variabili d'ambiente.

Per esempio, quando gcc viene aggiornato, il file /etc/env.d/05gcc viene anch'esso aggiornato senza chiedere alcuna interazione da parte dell'utente.

Questo non solo avvantaggia Portage, ma anche l'utente. Occasionalmente agli utenti potrebbe venir chiesto di impostare una determinata variabile d'ambiente a livello di sistema. Ad esempio, prendiamo la variabile http_proxy. Anziché mettere in disordine /etc/profile, gli utenti possono ora semplicemente creare un file (per esempio /etc/env.d/99local) ed inserirci le definizioni:

FILE /etc/env.d/99localImpostare una variabile globale
http_proxy="proxy.server.com:8080"

Utilizzando lo stesso file per tutte le variabili autogestite, gli utenti hanno una rapida panoramica sulle variabili che loro stessi hanno definito.

env-update

Svariati file in /etc/env.d/ definiscono la variabile PATH. Questo non è un errore: quando viene eseguito il comando env-update, esso aggiungerà le varie definizioni prima di aggiornare le variabili d'ambiente, rendendo così facile per i pacchetti (o gli utenti) aggiungere la propria impostazione delle variabile d'ambiente senza interferire con i valori preesistenti.

Lo script env-update aggiungerà i valori secondo l'ordine alfabetico dei file /etc/env.d/. I nomi dei file devono iniziare con due cifre decimali.

CODE Ordine di aggiornamento utilizzato da env-update
00basic        99kde-env       99local
     +-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"

Non sempre avviene la concatenazione di variabili, solo con le seguenti variabili: 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, and PYTHONPATH. Per tutte le altre variabili viene usato il valore definito per ultimo (secondo l'ordine alfabetico dei file in /etc/env.d/).

È possibile aggiungere più variabili a questo elenco di variabili concatenate, aggiungendo il nome della variabile nella variabile COLON_SEPARATED o in SPACE_SEPARATED (anche all'interno di un file in /etc/env.d/).

Quando si esegue env-update, lo script creerà tutte le variabili d'ambiente e le posizionerà in /etc/profile.env (usato da /etc/profile). Esso estrae anche le informazioni dalla variabile LDPATH e le usa per creare /etc/ld.so.conf. Dopo ciò, verrà eseguito ldconfig per ricreare il file /etc/ld.so.cache usato dal linker (collegatore) dinamico.

Per vedere l'effetto di env-update immediatamente dopo averlo eseguito, eseguire il seguente comando per aggiornare l'ambiente. Gli utenti che hanno già installato autonomamente Gentoo probabilmente lo ricorderanno dalle istruzioni di installazione:

root #env-update && source /etc/profile
Nota
Il comando precedente aggiorna solo le variabili nel terminale corrente, nei nuovi terminali aperti e nei terminali "figlio". Quindi, se l'utente sta lavorando in X11, deve digitare source /etc/profile su ogni nuovo terminale aperto o riavviare X così che tutti i nuovi terminali generino le nuove variabili. Se viene utilizzato un gestore di login, è necessario diventare root e riavviare il servizio /etc/init.d/xdm.
Importante
Non è possibile utilizzare le variabili della shell quando si definiscono altre variabili. Ciò significa che cose come FOO="$BAR" (dove $BAR è un'altra variabile) vengono proibite.

Definire le variabili localmente

Specifico per l'utente

Potrebbe non essere necessario definire a livello globale una variabile d'ambiente. Per esempio, si potrebbe voler aggiungere la cartella /home/my_user/bin e la cartella di lavoro corrente (quella in cui si trova l'utente) alla variabile PATH, ma senza che gli altri utenti sul sistema abbiano questa impostazione nella loro variabile PATH. Per definire localmente una variabile d'ambiente, usare ~/.bashrc o ~/.bash_profile:

FILE ~/.bashrcEstendere PATH per un uso locale
# I due punti non seguiti da alcuna cartella vengono considerati come cartella di lavoro corrente
PATH="${PATH}:/home/my_user/bin:"

Dopo il logout/login (sconnessione e riconnessione), la variabile PATH verrà aggiornata.

Specifico per la sessione

Talvolta vengono richieste definizioni anche più rigide. Per esempio, un utente potrebbe voler essere in grado di utilizzare i binari da una cartella temporanea creata senza utilizzare il percorso dei binari stessi o modificando ~/.bashrc per il breve tempo necessario.

In questo caso, basta definire la variabile PATH nella sessione corrente usando il comando export. Finché l'utente non si disconnette, la variabile PATH utilizzerà le impostazioni temporanee.

root #export PATH="${PATH}:/home/my_user/tmp/usr/bin"