|
Size: 8129
Comment: sync with English master
|
Size: 8972
Comment: sync with english master
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 1: | Line 1: |
| #language en ~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[EnvironmentVariables|English]] - Italiano -~ |
#language it ~-[[DebianWiki/EditorGuide#translation|Traduzioni]]: [[EnvironmentVariables|English]] - Italiano -~ |
| Line 8: | Line 8: |
| * PATH = elenco di directory, separate dal carattere ":", in cui cercare gli eseguibili; | * PATH = elenco di directory, separate dal carattere ":", in cui cercare i comandi; |
| Line 10: | Line 10: |
| * USER = nome utente con cui è stato fatto il login attuale; * SHELL = la shell attuale; |
* LOGNAME = il nome utente attuale; * SHELL = la shell preferita dall'utente; |
| Line 13: | Line 13: |
| * EDITOR = definisce l'editor di testo preferito dell'utente; * ? = codice d'uscita del comando più recente; * (ulteriori aggiunte sono benvenute). |
* EDITOR = l'editor di testo preferito dell'utente; * MAIL = la posizione della casella di posta elettronica in entrata dell'utente; |
| Line 19: | Line 18: |
| Le variabili vengono definite con coppie nome-valore: "NOME = stringa qualsiasi come valore". Il nome della variabile solitamente è tutto in lettere maiuscole; tutto ciò che segue il segno di uguaglianza, fino al carattere di fine riga, è considerato come il valore della variabile. Gli spazi bianchi prima o dopo il segno di uguaglianza sono ignorati. Le variabili possono essere definite ad hoc, scrivendo il comando appropriato in un terminale. In Bash questo sarebbe "{{{export MIAVAR=Ciao mondo}}}". In questo caso la variabile rimane definita fino alla fine della sessione di terminale. | Le variabili vengono definite con coppie nome-valore: "NOME=stringa qualsiasi come valore". Il nome della variabile solitamente è tutto in lettere maiuscole; tutto ciò che segue il segno di uguaglianza, fino al carattere di fine riga, è considerato come il valore della variabile. Le variabili possono essere definite ''ad hoc'' in un terminale scrivendo il comando appropriato. In Bash questo è `export MIOVAL="Ciao mondo"`. In questo caso la variabile rimane definita fino alla fine della sessione di terminale. |
| Line 21: | Line 20: |
| Quando si lavora in shell o con script di shell, se non si desidere sovrascrivere il valore precedente della variabile, includere il nome della variabile nella nuova definizione. Ad esempio, in Bash usare: "{{{export PATH=$PATH:~/bin}}}". Questo esempio mostra come aggiungere la directory {{{bin}}} all'interno della directory home dell'utente nella variabile d'ambiente PATH. | Se si desidera aggiungere qualcosa ad una variabile, invece di sovrascrivere il valore precedente, includere il nome della variabile nella nuova definizione. Ad esempio, in Bash usare: "{{{export PATH=$PATH:~/bin}}}". Questo esempio mostra come aggiungere la directory {{{bin}}} all'interno della directory home dell'utente nella variabile d'ambiente PATH. |
| Line 32: | Line 31: |
| Il processo di avvio per ciò che riguarda la definizione di variabili d'ambiente quando viene usata una console testuale (chiamata anche shell di login). | Il login nella console testuale termina con una ''shell di login''. Le variabili vengono acquisite in vari passaggi, da processi multipli in sequenza. Ogni processo aggiunge alcune variabili in più. |
| Line 34: | Line 33: |
| 1. init esegue gli script di avvio in {{{/etc/init.d}}} a seconda del runlevel impostato in {{{/etc/inittab}}}. Dato che l'ambiente di init è molto scarno, gli script definiscono le variabili d'ambiente richieste al loro interno. 1. init avvia il processo di login testuale che rimane in ascolto per i login utente. Quando un utente fa il login, il processo login controlla il file {{{/etc/passwd}}} per vedere quale shell deve avviare per quel particolare utente. 1. La shell viene avviata e legge i suoi file di configurazione specifici. a. Bash legge prima {{{/etc/profile}}} per ottenere i valori definiti per tutti gli utenti; dopo cerca {{{~/.bash_profile}}}, {{{~/.bash_login}}} e {{{~/.profile}}}, in questo ordine, e legge ed esegue i comandi nel primo di questi file che esiste ed è leggibile. b. (informazioni su altre shell sono benvenute) |
1. `init` esegue gli script di avvio in `/lib/systemd/system` (in systemd) o `/etc/rc?.d` a seconda del runlevel impostato in `/etc/inittab` (in sysvinit). Ogni servizio o script definisce le proprie variabili di cui ha bisogno. 1. Alla fine del processo di avvio, `init` esegue un processo `getty` su una o più console virtuali. `getty` resta in attesa aspettando che un utente digiti il proprio nome e successivamente imposta la variabile `TERM` ed esegue `login` per chiedere la password. 1. `login` controlla in `/etc/passwd` ed `/etc/shadow` i dettagli dell'account dell'utente. Se la password può essere accettata, `login` imposta `HOME`, `SHELL`, `PATH`, `LOGNAME` e `MAIL` sulla base del contenuto di `/etc/passwd`, controlla PAM e da ultimo esegue la shell di login dell'utente. a. PAM può dire a `login` di leggere anche le variabili in `/etc/environment`. Questo è il comportamento predefinito. 1. La shell di login viene avviata e legge i suoi file di configurazione specifici. a. DebianPkg:bash legge prima `/etc/profile` per ottenere i valori definiti per tutti gli utenti. Dopo aver letto tale file, controlla `~/.bash_profile`, `~/.bash_login` e `~/.profile`, in questo ordine, e legge ed esegue i comandi nel primo di questi file che esiste ed è leggibile. Vedere DotFiles per i dettagli completi. a. (informazioni su altre shell sono benvenute) |
| Line 41: | Line 42: |
| == Usando l'interfaccia utente grafica == Il processo di avvio per ciò che riguarda la definizione di variabili d'ambiente quando viene usato un login grafico. (Le informazioni in questa sezione sono specifiche per Gnome e GDM.) |
== Usare un graphical display manager == Il processo di login è piuttosto diverso se si usa un [[it/DisplayManager|Display manager]]. |
| Line 44: | Line 45: |
| 1. init esegue gli script di avvio in {{{/etc/init.d}}} a seconda del runlevel impostato in {{{/etc/inittab}}}. Dato che l'ambiente di init è molto scarno, gli script definiscono le variabili d'ambiente richieste al loro interno. 1. init avvia il display manager GDM che, a sua volta, avvia il login grafico. 1. Quando l'utente fa il login con successo, GDM avvia xsession che legge il file {{{/etc/gdm/Xsession}}} e con esso le variabili d'ambiente per la sessione dell'utente. La versione predefinita del file {{{Xsession}}} legge prima {{{/etc/profile}}} per le impostazioni globali e poi {{{~/.profile}}} per aggiungere le impostazioni individuali dell'utente. Ora le variabili d'ambiente sono impostate e vengono usate quando vengono eseguiti programmi all'interno di questa sessione. |
1. `init` esegue i servizi come descritto sopra. Uno di questi servizi è il display manager dell'utente. 1. Quando l'utente fa il login con successo, il display manager controlla PAM e poi avvia una [[Xsession|sessione X]]. a. PAM può dire al display manager di leggere le variabili in `/etc/environment`. 1. La sessione X legge `~/.xsessionrc` ed eventualmente altri file a seconda del tipo di sessione. I login grafici in modo predefinito ''non'' leggono i file di avvio della shell (`/etc/profile` e `~/.profile` e così via), ma come utente si può scegliere di creare un file `~/.xsessionrc` che lo fa. |
| Line 52: | Line 55: |
| * Mettere tutte le definizioni globali, cioè quelle che hanno effetto per tutti gli utenti in {{{/etc/profile}}}. * Inserire tutte le definizioni personali in {{{~/.profile}}}. * Creare o modificare il file {{{~/.bash_profile}}} e includervi i comandi: |
* Mettere tutte le variabili d'ambiente globali, cioè quelle che hanno effetto per tutti gli utenti in '''/etc/environment''' * Ricordarsi che questo file viene letto da PAM, ''non'' da una shell. Non vi si possono usare espansioni di shell. Ad esempio, `MAIL=$HOME/Maildir/` non funziona! * '''Non''' esiste una soluzione indipendente dalla shell e dal login al problema di come configurare l'ambiente per tutti gli utenti, a parte i casi banali che può gestire PAM. * Mettere tutte le impostazioni temporanea per la shell (alias, funzioni, opzioni della shell) in '''~/.bashrc''' * Inserire tutte le variabili d'ambiente personali in '''~/.profile'''. * Creare o modificare il file '''~/.bash_profile''' e includervi i comandi: |
| Line 62: | Line 68: |
| * Creare o modificare il file '''~/.xsessionrc''' e includervi gli stessi comandi precedenti. Questo è un approccio veloce e non pulito! Non è per gli utenti iperattenti. |
|
| Line 65: | Line 75: |
| Se si avvia il sistema X Window (la GUI) da una console testuale, le variabili d'ambiente sono già definite come spiegato precedentemente. Tuttavia, il gestore di finestre può rileggere gli stessi file un'altra volta (vedere in seguito). Ciò non è solitamente un problema, ma può avere risultati inaspettati come la variabile PATH che ha tutte le voci elencate due volte. | Se si avvia il sistema X Window (la GUI) da una console testuale, le variabili d'ambiente sono già definite dalla shell di login, come spiegato precedentemente. Tuttavia, il gestore di finestre può rileggere gli stessi file un'altra volta (vedere in seguito). Ciò non è solitamente un problema, ma può avere risultati inaspettati come la variabile PATH che ha tutte le voci elencate due volte. |
Traduzioni: English - Italiano
Informazioni generali
Le variabili d'ambiente sono stringhe con nome disponibili per tutte le applicazioni. Le variabili sono usate per adattare il comportamento di ciascuna applicazione all'ambiente in cui viene eseguita. Si possono definire percorsi per i file, opzioni di lingua e così via. Si può controllare il manuale di ciascuna applicazione per vedere quali variabili vengano usate da essa.
Detto ciò, ci sono diverse variabili standard negli ambienti Linux:
- PATH = elenco di directory, separate dal carattere ":", in cui cercare i comandi;
- HOME = attuale directory home dell'utente;
- LOGNAME = il nome utente attuale;
- SHELL = la shell preferita dall'utente;
- PS1 = definisce il prompt dei comandi della shell;
- EDITOR = l'editor di testo preferito dell'utente;
- MAIL = la posizione della casella di posta elettronica in entrata dell'utente;
Per vedere le proprie variabili attualmente definite, aprire un terminale e digitare il comando "env".
Le variabili vengono definite con coppie nome-valore: "NOME=stringa qualsiasi come valore". Il nome della variabile solitamente è tutto in lettere maiuscole; tutto ciò che segue il segno di uguaglianza, fino al carattere di fine riga, è considerato come il valore della variabile. Le variabili possono essere definite ad hoc in un terminale scrivendo il comando appropriato. In Bash questo è export MIOVAL="Ciao mondo". In questo caso la variabile rimane definita fino alla fine della sessione di terminale.
Se si desidera aggiungere qualcosa ad una variabile, invece di sovrascrivere il valore precedente, includere il nome della variabile nella nuova definizione. Ad esempio, in Bash usare: "export PATH=$PATH:~/bin". Questo esempio mostra come aggiungere la directory bin all'interno della directory home dell'utente nella variabile d'ambiente PATH.
Nella maggior parte dei casi è molto comodo memorizzare queste variabili in un file di configurazione che viene letto all'avvio del sistema e quando l'utente fa il login, in modo che siano disponibili automaticamente. Sfortunatamente ciò non è sempre così semplice come sembra. Perché? Per un paio di ragioni.
- Le variabili d'ambiente vengono ereditate; il programma genitore cioè imposta l'ambiente dei processi figli. È necessario configurare le impostazioni del genitore in modo che vengano passate a tutti i processi figli.
- I programmi genitori in questione sono svariate shell e gestori di finestre, ma ciascuno di essi legge un file di configurazione (file punto) diverso quando viene avviato.
Perciò ora è chiaro che deve essere considerato sia l'ordine di avvio dei processi di sistema, sia i file di configurazione che questi leggono all'avvio. Vedere la pagina sui file di configurazione, oppure continuare a leggere questa pagina ...
Ci sono due modi in cui si può usare la propria macchina Linux: dalla console testuale o con un'interfaccia utente grafica.
Usando la console testuale
Il login nella console testuale termina con una shell di login. Le variabili vengono acquisite in vari passaggi, da processi multipli in sequenza. Ogni processo aggiunge alcune variabili in più.
- Alla fine dell'avvio viene avviato "init", il genitore di tutti i processi. L'ambiente di init, compresa la variabile PATH, viene definito nel suo codice sorgente e non può essere modificato al momento dell'esecuzione.
init esegue gli script di avvio in /lib/systemd/system (in systemd) o /etc/rc?.d a seconda del runlevel impostato in /etc/inittab (in sysvinit). Ogni servizio o script definisce le proprie variabili di cui ha bisogno.
Alla fine del processo di avvio, init esegue un processo getty su una o più console virtuali. getty resta in attesa aspettando che un utente digiti il proprio nome e successivamente imposta la variabile TERM ed esegue login per chiedere la password.
login controlla in /etc/passwd ed /etc/shadow i dettagli dell'account dell'utente. Se la password può essere accettata, login imposta HOME, SHELL, PATH, LOGNAME e MAIL sulla base del contenuto di /etc/passwd, controlla PAM e da ultimo esegue la shell di login dell'utente.
PAM può dire a login di leggere anche le variabili in /etc/environment. Questo è il comportamento predefinito.
- La shell di login viene avviata e legge i suoi file di configurazione specifici.
bash legge prima /etc/profile per ottenere i valori definiti per tutti gli utenti. Dopo aver letto tale file, controlla ~/.bash_profile, ~/.bash_login e ~/.profile, in questo ordine, e legge ed esegue i comandi nel primo di questi file che esiste ed è leggibile. Vedere DotFiles per i dettagli completi.
- (informazioni su altre shell sono benvenute)
Ora le variabili d'ambiente sono pronte per essere usate dalle aplicazioni che vengono avviate dal terminale.
Usare un graphical display manager
Il processo di login è piuttosto diverso se si usa un Display manager.
- Alla fine dell'avvio di sistema, viene avviato "init", il genitore di tutti i processi.
init esegue i servizi come descritto sopra. Uno di questi servizi è il display manager dell'utente.
Quando l'utente fa il login con successo, il display manager controlla PAM e poi avvia una sessione X.
PAM può dire al display manager di leggere le variabili in /etc/environment.
La sessione X legge ~/.xsessionrc ed eventualmente altri file a seconda del tipo di sessione.
I login grafici in modo predefinito non leggono i file di avvio della shell (/etc/profile e ~/.profile e così via), ma come utente si può scegliere di creare un file ~/.xsessionrc che lo fa.
Guida rapida
Per coloro che hanno fretta e desiderano semplicemente far funzionare le cose, ecco cosa si può fare.
Mettere tutte le variabili d'ambiente globali, cioè quelle che hanno effetto per tutti gli utenti in /etc/environment
Ricordarsi che questo file viene letto da PAM, non da una shell. Non vi si possono usare espansioni di shell. Ad esempio, MAIL=$HOME/Maildir/ non funziona!
Non esiste una soluzione indipendente dalla shell e dal login al problema di come configurare l'ambiente per tutti gli utenti, a parte i casi banali che può gestire PAM.
Mettere tutte le impostazioni temporanea per la shell (alias, funzioni, opzioni della shell) in ~/.bashrc
Inserire tutte le variabili d'ambiente personali in ~/.profile.
Creare o modificare il file ~/.bash_profile e includervi i comandi:
if [ -f ~/.profile ]; then . ~/.profile fiCreare o modificare il file ~/.xsessionrc e includervi gli stessi comandi precedenti.
Questo è un approccio veloce e non pulito! Non è per gli utenti iperattenti.
Note ed eccezioni
Startx da terminale
Se si avvia il sistema X Window (la GUI) da una console testuale, le variabili d'ambiente sono già definite dalla shell di login, come spiegato precedentemente. Tuttavia, il gestore di finestre può rileggere gli stessi file un'altra volta (vedere in seguito). Ciò non è solitamente un problema, ma può avere risultati inaspettati come la variabile PATH che ha tutte le voci elencate due volte.
Shell a cascata
Se si avvia un'altra shell da quella di login (sì, è possibile farlo), la seconda è una shell "non di login". Non leggera i file di avvio nominati, ma cercherà invece gli script di avvio "non di login" nella directory home dell'utente. In bash è chiamato ~/.bashrc. Per evitare di specificare gli stessi valori in due posti, solitamente lo script di avvio della shell di login, ~/.bash_profile include ~/.bashrc alla fine della sua esecuzione. Per implementare questo sistema includere le righe seguenti nel proprio file ~/.bash_profile:
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
Finestra di terminale in X
Se si avvia una finestra di terminale/console nell'ambiente desktop grafico, si tratterà di un terminale non di login e leggerà solo lo script di avvio non di login dell'utente. Per Bash questo è ~/.bashrc.
Usando su
Il comando "su" viene usato per diventare un altro utente durante una sessione di login. È usato comunemente per ottenere temporaneamente i permessi di root da una sessione normale. Il comando "su" reimposta il valore della variabile d'ambiente PATH a quello definito in /etc/login.defs dalle variabili ENV_PATH e ENV_SUPATH. Notare che l'uso dello strumento Gnome "gksu" dal pannello di Gnome, usa in modo predefinito "su" internamente (cioè il proprio valore di PATH andrà perso se non lo si configura in login.defs).
