Impostazione dell'ambiente

Stiamo per creare un buon ambiente di lavoro creando due nuovi file di avvio per la shell bash. Mentre siete "loggati" come utente lfs, inserite il seguente comando per creare un nuovo file .bash_profile:

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

Normalmente, quando accedete come utente lfs, la shell iniziale č una shell di login, che legge il file /etc/profile del vostro host (il quale probabilmente contiene qualche variabile di ambiente impostata) e quindi .bash_profile. Il comando exec env -i ... /bin/bash nell'ultimo file sostituisce la shell funzionante con una nuova con un ambiente completamente vuoto, tranne per le variabili HOME, TERM e PS1. Questo garantisce che nessuna variabile di ambiente non voluta e potenzialmente pericolosa si infiltri nel nostro sistema. La tecnica qui usata č piuttosto strana, ma ottiene il risultato di forzare un ambiente pulito.

La nuova istanza della shell č una non-login shell, che non legge i file /etc/profile o .bash_profile, ma legge invece il file .bashrc. Ora create quest'ultimo file:

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 disattiva la funzione hash di bash. Normalmente l'hashing č una caratteristica utile: bash usa una hash table per ricordare i percorsi completi dei files eseguibili ed evitare di cercare ripetutamente il PATH per trovare lo stesso eseguibile. Noi vorremmo che i nuovi strumenti fossero utilizzati subito quando vengono installati, e disattivando la funzione hash, i nostri comandi “interattivi” (make, patch, sed, cp e cosė via) utilizzeranno sempre le versioni disponibili pių recenti durante il processo di costruzione.

Impostare la maschera di creazione file dell'utente a 022 garantisce che i nuovi file e directory creati siano scrivibili solo dal loro proprietario, ma leggibili ed eseguibili da chiunque.

La variabile LFS deve, ovviamente, venire impostata sul punto di mount che scegliete.

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 vostro sistema host usa una versione di Glibc pių vecchia della 2.2.4, avendo LC_ALL impostata su qualcosa di diverso da “POSIX” o “C” nel corso di questo capitolo possono sorgere problemi se uscite dall'ambiente chroot e volete rientrarvi successivamente. Impostando LC_ALL a “POSIX” (o “C”, i due sono equivalenti) saremo sicuri che tutto funzioni come previsto nell'ambiente chroot.

Aggiungiamo /tools/bin all'inizio del PATH standard cosė che, proseguendo lungo questo capitolo, gli strumenti che costruiamo verranno usati per tutto il resto del processo di costruzione.

Infine, per avere l'ambiente pronto per costruire gli strumenti temporanei, caricate il profilo creato:

source ~/.bash_profile