7.9. I file di avvio della shell Bash

Il programma di shell /bin/bash (a cui faremo riferimento come “la shell” da ora in poi) usa una collezione di file di avvio per creare un ambiente in cui funzionare. Ogni file ha uno specifico uso e può influenzare login e ambienti interattivi in modi differenti. I file nella directory /etc forniscono configurazioni globali. Se esiste un file equivalente nella propria home directory, questo sovrascriverà le definizioni globali.

Una shell login interattiva viene fatta partire dopo un login portato a termine con successo, usando /bin/login, leggendo il file /etc/passwd. Una shell non-login interattiva viene fatta partire da linea di comando (es., [prompt]$/bin/bash). Una shell non interattiva di solito è presente quando è in esecuzione uno shell script. Non è interattiva perché sta processando uno script e non aspetta un input dell'utente tra i vari comandi.

Per maggiori informazioni vedere info bash nella sezione Bash Startup Files and Interactive Shells.

I file /etc/profile e ~/.bash_profile sono letti quando una shell viene invocata come login shell interattiva.

Il file /etc/profile di base creato di seguito definisce alcune variabili ambiente necessarie per il supporto del linguaggio nativo. Definendole appropriatamente si ottiene:

Questo script definisce anche la variabile ambiente INPUTRC che permette a Bash e a Readline di usare il file /etc/inputrc creato prima.

Sostituire [ll] con le due lettere del codice della propria lingua (es. “en”) e [CC] con le due lettere del codice del proprio paese (es. “GB”). [charmap] deve essere rimpiazzato con il charmap canonico per la propria localizzazione scelta.

L'elenco di tutte le localizzazioni supportate da Glibc può essere ottenuto eseguendo il seguente comando:

locale -a

Le localizzazioni possono avere molti sinonimi, ad es. a “ISO-8859-1” si fa anche riferimento come “iso8859-1” e “iso88591”. Alcune applicazioni non possono gestire correttamente i vari sinonimi, quindi è più sicuro scegliere il nome canonico per una particolare localizzazione. Per determinare il nome canonico eseguire il seguente comando, dove [locale name] è l'output dato da locale -a per la propria localizzazione preferita (“en_GB.iso88591” nel nostro esempio).

LC_ALL=[locale name] locale charmap

Per la localizzazione “en_GB.iso88591” il comando precedente stamperà:

ISO-8859-1

Il risultato di questo è un'impostazione finale di “en_GB.ISO-8859-1”.

Una volta che sono state determinate le impostazioni locali corrette creare il file /etc/profile:

cat > /etc/profile << "EOF"
# Begin /etc/profile

export LANG=[ll]_[CC].[charmap]
export INPUTRC=/etc/inputrc

# End /etc/profile
EOF
[Nota]

Nota

Le localizzazioni “C” (default) e “en_US” (quella raccomandata per utenti inglesi negli Stati Uniti) sono diverse.

Configurare il layout della tastiera, il font per lo schermo e le variabili di ambiente relative alla località sono i soli passi per l'internazionalizzazione necessari per supportare localizzazioni che usino una codifica ordinaria a byte singolo e una direzione di scrittura da sinistra a destra. Casi più complessi (incluse localizzazioni basate su UTF-8) richiedono passi e patch aggiuntivi, perché molte applicazioni tendono a non funzionare correttamente in tali condizioni. Questi passi e patch non sono incluse nel libro e tali localizzazioni non sono supportate da LFS.