ENVIRON(7)

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/