4.4. Configurazione dell'ambiente

Impostare un buon ambiente di lavoro creando due nuovi file di avvio per la shell bash. Mentre si è connessi come utente lfs, digitare il seguente comando per creare un nuovo .bash_profile:

cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF

Quando si accede come utente lfs, di solito la shell iniziale è una shell di login, che legge il file /etc/profile del sistema ospite (il quale probabilmente contiene alcune impostazioni e variabili d'ambiente) e quindi .bash_profile. Il comando exec env -i.../bin/bash nel file .bash_profile sostituisce la shell in esecuzione con una nuova con un ambiente completamente vuoto, tranne che per le variabili HOME, TERM e PS1. Questo garantisce che nessuna variabile d'ambiente non voluta e potenzialmente pericolosa si infiltri dal sistema ospite nell'ambiente costruito. La tecnica qui usata raggiunge l'obiettivo di assicurare un ambiente pulito.

La nuova istanza della shell è una shell non-login, che non legge i file /etc/profile o .bash_profile, ma legge invece il file .bashrc. Creare ora il file .bashrc:

cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL PATH
EOF

Il comando set +h disabilita la funzione hash della bash. Normalmente l'hashing è una caratteristica utile: bash usa una tabella hash per ricordare i percorsi completi dei file eseguibili ed evitare di cercare ripetutamente nel PATH per trovare lo stesso eseguibile. Tuttavia i nuovi tool dovrebbero essere utilizzati non appena vengono installati. Disattivando la funzione hash, la shell cercherà sempre nel PATH quando un programma sta per essere eseguito. In questo modo, la shell troverà i nuovi tool compilati in $LFS/tools non appena sono disponibili senza ricordare una precedente versione dello stesso programma in una posizione diversa.

Impostare la maschera di creazione file dell'utente (umask) a 022 garantisce che i nuovi file e directory creati siano scrivibili solo dal loro proprietario, ma siano leggibili ed eseguibili da chiunque (supponendo che i modi di default siano usati dalla chiamata di sistema open(2), i nuovi file finiranno per avere i permessi con la modalità 644 e le directory con la modalità 755).

La variabile LFS dovrebbe venire impostata sul punto di mount scelto.

La variabile LC_ALL controlla la localizzazione di certi programmi, facendo sì che i loro messaggi seguano le convenzioni di un paese specifico. Se il sistema ospite usa una versione di Glibc più vecchia della 2.2.4, avere LC_ALL impostata a qualcosa di diverso da «POSIX» o «C» (durante questo capitolo) può causare problemi se si esce dall'ambiente chroot e vi si vuole rientrare successivamente. Impostare LC_ALL a «POSIX» o «C» (i due sono equivalenti) assicura che ogni cosa funzioni come ci si aspetta nell'ambiente chroot.

Mettendo /tools/bin all'inizio nel PATH standard, tutti i programmi installati in Capitolo 5 vengono trovati dalla shell immediatamente dopo la loro installazione. Questo, combinato con la disabilitazione dell'hashing, limita il rischio che vecchi programmi vengano usati dall'ospite quando gli stessi programmi sono disponibili nell'ambiente del capitolo 5.

Infine, per avere l'ambiente completamente preparato per costruire i tool temporanei, caricare il profilo utente appena creato:

source ~/.bash_profile