ENVIRON(7) Manuale del programmatore di Linux ENVIRON(7)

environ - ambiente dell'utente

extern char **environ;

La variabile environ si riferisce a un array di puntatori a stringhe chiamato l'«ambiente». L'ultimo puntatore di questo array ha valore NULL. Questo array di stringhe è reso disponibile al processo dalla chiamata di sistema execve(2) quando viene eseguito un nuovo programmaQuando viene creato un processo figlio tramite fork(2), esso eredita una copia dell'ambiente del suo genitore.

By convention, the strings in environ have the form "name=value". The name is case-sensitive and may not contain the character "=". The value can be anything that can be represented as a string. The name and the value may not contain an embedded null byte ('\0'), since this is assumed to terminate the string.

Le variabili d'ambiente possono essere messe nell'ambiente di shell dal comando export e da `"nome=valore" in sh(1), o dal comando setenv se si usa csh(1).

L'ambiente iniziale della shell è riempito in diversi modi, tra i quali le definizioni contenute in /etc/environment che sono elaborate da pam_env(8) per tutti gi utenti al momento del login (su sistemi che impiegano pam(8)). In aggiunta, vari script di inizializzazione della shell, come lo script a livello globale /etc/profile e lo script delle inizializzazioni per utente possono includere comandi che aggiungolo variabili all'ambiente della shell; per i dettagli vedere la pagina di manuale della shell preferita.

Le shell in stile Bourne riconoscono la sintassi

NOME=valore comando

per creare una definizione di variabile d'ambiente solo nell'ambito del processo che esegue comando. Più definizioni di variabile, separate da spazi bianchi, possono precedere comando.

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).

What follows is a list of environment variables typically seen on a system. This list is incomplete and includes only common variables seen by average users in their day-to-day routine. Environment variables specific to a particular program or library function are documented in the ENVIRONMENT section of the appropriate manual page.

USER
Il nome dell'utente collegato (usato da programmi derivati da BSD). Impostato al momento del login, vedi NOTE più avanti.
LOGNAME
Il nome dell'utente collegato (usato da programmi derivati da System V). Impostato al momento del login, vedi NOTE più avanti.
HOME
La directory di login dell'utente, impostata al momento del login, vedi NOTE più avanti.
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 e LC_TIME (vedi locale(7) per ulteriori dettagli sulle variabili d'ambiente LC_*).
PATH
The sequence of directory prefixes that sh(1) and many other programs employ when searching for an executable file that is specified as a simple filename (i.a., a pathname that contains no slashes). The prefixes are separated by colons (:). The list of prefixes is searched from beginning to end, by checking the pathname formed by concatenating a prefix, a slash, and the filename, until a file with execute permission is found.
As a legacy feature, a zero-length prefix (specified as two adjacent colons, or an initial or terminating colon) is interpreted to mean the current working directory. However, use of this feature is deprecated, and POSIX notes that a conforming application shall use an explicit pathname (e.g., .) to specify the current working directory.
Analogamente a PATH, CDPATH è usato da alcune shell per trovare la destinazione di un cambio di directory, MANPATH è usato da man(1) per trovare pagine di manuale, e così via).
PWD
La directory di lavoro corrente. Impostato da alcune shell.
SHELL
The absolute pathname of the user's login shell. Set at login time, see section NOTES below.
TERM
Il tipo di terminale per il quale deve essere preparato l'output.
PAGER
The user's preferred utility to display text files. Any string acceptable as a command-string operand to the sh -c command shall be valid. If PAGER is null or is not set, then applications that launch a pager will default to a program such as less(1) or more(1).
EDITOR/VISUAL
The user's preferred utility to edit text files. Any string acceptable as a command_string operand to the sh -c command shall be valid.

Si noti che il comportamento di molti programmi e routine delle librerie è influenzato dalla presenza o dal valore di alcune variabili d'ambiente. Gli esempi comprendono:

  • Le variabili LANG, LANGUAGE, NLSPATH, LOCPATH, LC_ALL, LC_MESSAGES eccetera, influenzano l'uso delle localizzazioni; si veda catopen(3), gettext(3) e locale(7).
  • TMPDIR influenza il prefisso del percorso di nomi creati da tempnam(3) e altre routine, e la directory temporanea usata da sort(1) e da altri programmi.
  • LD_LIBRARY_PATH, LD_PRELOAD e altre variabili LD_* influenzano il comportamento del loader/linker dinamico. Si veda anche ld.so(8).
  • POSIXLY_CORRECT fa seguire ad alcuni programmi e 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).

Historically and by standard, environ must be declared in the user program. However, as a (nonstandard) programmer convenience, environ is declared in the header file <unistd.h> if the _GNU_SOURCE feature test macro is defined (see feature_test_macros(7)).

Le operazioni PR_SET_MM_ENV_START e PR_SET_MM_ENV_END di prctl(2) possono essere usate per controllare la posizione dell'ambiente dei processi.

The HOME, LOGNAME, SHELL, and USER variables are set when the user is changed via a session management interface, typically by a program such as login(1) from a user database (such as passwd(5)). (Switching to the root user using su(1) may result in a mixed environment where LOGNAME and USER are retained from old user; see the su(1) manual page.)

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, etc.). 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.

bash(1), csh(1), env(1), login(1), printenv(1), sh(1), su(1), tcsh(1), execve(2), clearenv(3), exec(3), getenv(3), putenv(3), setenv(3), unsetenv(3), locale(7), ld.so(8), pam_env(8)

Questa pagina fa parte del rilascio 5.11 del progetto Linux man-pages. Una descrizione del progetto, le istruzioni per la segnalazione degli errori, e l'ultima versione di questa pagina si trovano su https://www.kernel.org/doc/man-pages/.

La traduzione italiana di questa pagina di manuale è stata creata da Giovanni Bortolozzo <borto@dei.unipd.it>, Alessandro Rubini <rubini@linux.it>, Ottavio G. Rizzo <rizzo@pluto.linux.it>, Giulio Daprelà <giulio@pluto.it>, Elisabetta Galli <lab@kkk.it> e Marco Curreli <marcocurreli@tiscali.it>

Questa traduzione è documentazione libera; leggere la GNU General Public License Versione 3 o successiva per le condizioni di copyright. Non ci assumiamo alcuna responsabilità.

Per segnalare errori nella traduzione di questa pagina di manuale inviare un messaggio a pluto-ildp@lists.pluto.it.

22 marzo 2021 Linux