NOME¶
environ - ambiente dell'utente
SINTASSI¶
extern char **environ;
DESCRIZIONE¶
La variabile
environ si riferisce ad un vettore di stringhe chiamato
l'«ambiente» (questa variabile deve essere dichiarata in un
programma utente, ma viene dichiarata nel file header
unistd.h nel caso
in cui l'header venga da libc4 o libc5, o nel caso in cui venga da glibc e
_GNU_SOURCE era stata definita). Questo vettore di stringhe è reso
disponibile al processo dalla chiamata di sistema
exec(3) che lo aveva
fatto partire. Per convenzione queste stringhe sono nella forma `
nome=valore'. Esempi comuni sono:
- USER
- Il nome dell'utente collegato (usato da programmi derivati
da BSD).
- LOGNAME
- Il nome dell'utente collegato (usato da programmi derivati
da System V).
- HOME
- La directory di login dell'utente, impostata da
login(1) al valore specificato nel file delle password
passwd(5).
- LANG
- Il nome della localizzazione da usare per le categorie di
localizzazione quando non siano specificate altrimenti da LC_ALL o
da variabili d'ambiente più specifiche come LC_COLLATE,
LC_CTYPE, LC_MESSAGES, LC_MONETARY,
LC_NUMERIC, LC_TIME, cf. locale(5).
- PATH
- La sequenza dei prefissi di directory che sh(1) e
molti altri programmi usano per cercare un file noto solo un suo percorso
incompleto. I prefissi sono separati da « :» (allo stesso
modo, CDPATH è usato da alcune shell per trovare la
destinazione di un cambio di directory, MANPATH è usato da
man(1) per trovare pagine di manuale, ecc.).
- PWD
- La directory di lavoro corrente. Impostato da alcune
shell.
- SHELL
- Il nome di file della shell di login dell'utente.
- TERM
- Il tipo di terminale per il quale deve essere preparato
l'output.
- PAGER
- L'utilità preferita dall'utente per visualizzare file
di testo.
- EDITOR/VISUAL
- L'utilità preferita dall'utente per editare file di
testo.
Ulteriori nomi possono essere messi nell'ambiente dal comando
export e da
`nome=valore' in
sh(1), o dal comando
setenv se si usa
csh(1). Argomenti posso essere messi nell'ambiente come parametro di un
exec(3). Un programma in C può modificare il suo ambiente usando
le funzioni
getenv(3),
putenv(3),
setenv(3), e
unsetenv(3).
Si noti che il comportamento di molti programmi e routine delle librerie è
influenzato dalla presenza o dal valore di alcune variabili d'ambiente. Una
raccolta a caso:
Le variabili
LANG,
LANGUAGE,
NLSPATH,
LOCPATH,
LC_ALL,
LC_MESSAGES, ecc. influenzano l'uso delle
localizzazioni, cf.
locale(5).
TMPDIR influenza il prefisso del percorso di nomi creati da
tmpnam(3) e altre routine, la directory temporanea usata da
sort(1) e da altri programmi, ecc.
LD_LIBRARY_PATH,
LD_PRELOAD e altre variabili LD_* influenzano il
comportamento del loader/linker dinamico.
POSIXLY_CORRECT fa seguire ad alcuni programmi a routine di libreria le
norme POSIX.
Il comportamento di
malloc(3) è influenzato dalle variabili
MALLOC_*.
La variabile
HOSTALIASES dà il nome di un file contenente degli
alias da usare con
gethostbyname(3).
TZ e
TZDIR dà informazioni sulla zona di fuso orario
utilizzata da
tzset(3) e, attraverso questa, da funzioni come
ctime(3),
localtime(3),
mktime(3),
strftime(3).
Vedere anche
tzselect(8).
TERMCAP dà informazioni su come indirizzare un dato terminale (o
dà il nome di un file contenente tali informazioni).
COLUMNS e
LINES informa le applicazioni sulla dimensione della
finestra, forse sovrascrivendo la dimensione attuale.
PRINTER o
LPDEST può specificare la stampante che si desidera
usare. Vedere
lpr(1).
Ecc.
BACHI¶
Qui c'è chiaramente un rischio di sicurezza. Molti comandi di sistema sono
stati indotti a fare danni da un utente che specificava valori insoliti per
IFS o
LD_LIBRARY_PATH.
C'è anche il rischio di un inquinamento dello spazio nome. Programmi come
make e
autoconf permettono la sovrascrittura dei nomi delle
utility di default dall'ambiente con variabili dal nome simile cambiato in
maiuscole/minuscole. In questo modo esse usano
CC per selezionare il
compilatore C desiderato (e similarmente
MAKE,
AR,
AS,
FC,
LD,
LEX,
RM,
YACC, ecc.). Tuttavia in
alcuni usi tradizionali tale variabile d'ambiente dà opzioni al programma
invece di un nome di percorso. In questo modo uno ha
MORE,
LESS,
e
GZIP. Tale uso è considerato scorretto, e deve essere evitato
nei nuovi programmi. Gli autori di
gzip devono pensare di rinominare la
loro opzione a
GZIP_OPT.
VEDERE ANCHE¶
bash(1),
csh(1),
login(1),
sh(1),
tcsh(1),
execve(2),
clearenv(3),
exec(3),
getenv(3),
putenv(3),
setenv(3),
unsetenv(3),
locale(5)
COLOPHON¶
Questa pagina fa parte del rilascio 2.76 del progetto
man-pages di Linux.
Si può trovare una descrizione del progetto, e informazioni su come
riportare bachi, presso
http://www.kernel.org/doc/man-pages/. Per la
traduzione in italiano si può fare riferimento a
http://www.pluto.it/ildp/collaborare/