Avanti Indietro Indice

6. Le Shell

Spesso i processi dell'utente sono figli della shell menzionata in /etc/passwd per quel particolare utente. I file di inizializzazione delle shell spesso modificano la variabile PATH.

Al login, il nome della shell è preceduto dal carattere '-', ad esempio bash è chiamata "-bash". Questo per indicare alla shell che è una shell di login (login shell). In tal caso, la shell esegue i file di inizializzazione richiesti dal login. Altrimenti esegue qualche inizializzazione meno impegnativa. In più la shell controlla se essa stessa è interattiva e cioè se i comandi vengono da file o da terminale tty. Anche ciò influisce sull'inizializzazione, cosicché una shell non interattiva e non di login viene inizializzata molto poco (bash non esegue alcun codice di inizializzazione in tale caso).

6.1 Bash

Se avviata come normale login shell, bash legge il file globale /etc/profile, dove può essere specificato l'ambiente di sistema e la variabile PATH. Tuttavia, tale file non viene considerato se il sistema interpreta la shell come non interattiva. Il caso più importante è quello di rsh, in cui un comando è eseguito in una macchina comunicante. Il file /etc/profile non viene letto e PATH è ereditata dal demone rsh.

Bash riceve dalla riga di comando gli argomenti -login e -i che possono essere usati rispettivamente per impostare la shell rispettivamente come login shell o shell interattiva.

L'utente può sostituire i valori impostati in /etc/profile creando un file ~/.bash_profile, ~/.bash_login o ~/.profile. Si noti che solo il primo di questi viene eseguito, deviando dalla logica della convenzionale inizializzazione di csh. ~/.bash_login non viene eseguito in maniera particolare per le login shell e se esiste il file .bash_profile esso non viene eseguito affatto!

Se si usa bash con il nome "sh" invece del nome "bash", il programma emula l'inizializzazione della Bourne shell originale: legge solo i file di configurazione /etc/profile e ~/.profile e solo per le login shell.

6.2 tcsh

Se eseguita come login shell, tcsh esegue i file nel seguente ordine:

Si noti che tcsh può essere compilata per eseguire script di login prima degli script cshrc.

Le shell non interattive eseguono solo gli script *cshrc . Gli script *login possono essere usati per impostare PATH solo una volta al momento del login.


Avanti Indietro Indice