Configure um bom ambiente de trabalho criando dois novos arquivos de
inicialização para o shell bash. Enquanto logada(o) como
usuária(o) lfs
, emita o seguinte
comando para criar um novo .bash_profile
:
cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
Enquanto logada(o) como usuária(o) lfs
ou quando alternado para o(a) usuário(a)
lfs
usando um comando su com a opção “-
”, o shell inicial é um
shell de login que lê o
/etc/profile
do anfitrião
(provavelmente contendo algumas configurações e variáveis de
ambiente) e então .bash_profile
. O
comando exec env
-i.../bin/bash no arquivo .bash_profile
substitui o shell em execução por um
novo com um ambiente completamente vazio, exceto pelas variáveis
HOME
, TERM
e
PS1
. Isso garante que nenhuma variável de
ambiente indesejada e potencialmente danosa oriunda do sistema
anfitrião vaze para o ambiente de construção.
A nova instância do shell é um shell de não-login, que não lê, e executa, o
conteúdo dos arquivos /etc/profile
ou
.bash_profile
, porém, ao invés, lê, e
executa, o arquivo .bashrc
. Crie o
arquivo .bashrc
agora:
cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/usr/bin
if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
PATH=$LFS/tools/bin:$PATH
CONFIG_SITE=$LFS/usr/share/config.site
export LFS LC_ALL LFS_TGT PATH CONFIG_SITE
EOF
O significado das configurações em .bashrc
set
+h
O comando set +h
desliga a função hash do bash. “Hashing” geralmente é
uma característica útil—bash usa uma tabela hash para
lembrar o caminho completo para arquivos executáveis para
evitar procurar o PATH
várias vezes
para encontrar o mesmo executável. Entretanto, as novas
ferramentas deveriam ser usadas tão logo sejam instaladas.
Alternando para desligada a função hash força o shell a
procurar no PATH
sempre que um
aplicativo estiver para ser executado. Dessa forma, o shell
encontrará as ferramentas recém compiladas em $LFS/tools/bin
tão logo elas estejam
disponíveis sem lembrar da versão anterior do mesmo aplicativo
fornecida pela distribuição anfitriã, em /usr/bin
ou /bin
.
umask
022
Configurar a máscara de criação de arquivos da(o) usuária(o)
(umask) para 022 garante que recém criados arquivos e
diretórios são graváveis somente por suas(eus) donas(os), mas
são legíveis e executáveis por qualquer pessoa (assumindo que
os modos padrão são usados pelas chamadas de sistema
open(2)
, novos arquivos
terminarão com modo de permissão 644 e diretórios com modo
755).
LFS=/mnt/lfs
A variável LFS
deveria ser
configurada para o ponto de montagem escolhido.
LC_ALL=POSIX
A variável LC_ALL
controla a
localização de certos aplicativos, fazendo suas mensagens
seguirem as convenções de um país especificado. Configurar
LC_ALL
para “POSIX” ou
“C” (as
duas são equivalentes) garante que tudo vai funcionar como
esperado no ambiente de compilação cruzada.
LFS_TGT=(uname
-m)-lfs-linux-gnu
A variável LFS_TGT
configura uma não
padrão, porém compatível descrição de máquina para uso quando
da construção do nosso compilador cruzado e vinculador e quando
da compilação cruzada do nosso conjunto de ferramentas
temporárias. Mais informação é fornecida por Observações
Técnicas do Conjunto de Ferramentas.
PATH=/usr/bin
Muitas distribuições modernas do Linux mesclaram /bin
e /usr/bin
. Quando esse for o caso, a variável
PATH
padrão deveria ser configurada
para /usr/bin/
para o ambiente do
Capítulo 6.
Quando esse não for o caso, a seguinte linha acrescenta
/bin
ao caminho.
if [ ! -L /bin ];
then PATH=/bin:$PATH; fi
Se /bin
não for um link
simbólico, [então] ele precisa ser acrescentado à variável
PATH
.
PATH=$LFS/tools/bin:$PATH
Ao se colocar $LFS/tools/bin
a
frente do PATH
padrão, o compilador
cruzado instalado no início do Capítulo 5
é pego pelo shell imediatamente depois da instalação dele.
Isso, combinado com a desativação do hashing, limita o risco de
que o compilador originário do anfitrião seja usado em vez do
compilador cruzado.
CONFIG_SITE=$LFS/usr/share/config.site
No Capítulo 5
e no Capítulo 6,
se essa variável não estiver configurada, [então] os scripts
configure
possivelmente tentem carregar itens de configuração específicos
para algumas distribuições a partir de /usr/share/config.site
no sistema anfitrião.
Substitua-o para evitar uma potencial contaminação oriunda do
anfitrião.
export
...
Ao tempo que os comandos precedentes tenham configurado algumas variáveis, com a finalidade de torná-las visíveis dentro de quaisquer sub-shells, nós as exportamos.
Muitas distribuições comerciais acrescentam uma instância não
documentada de /etc/bash.bashrc
à
inicialização do bash. Esse arquivo tem o
potencial de modificar o ambiente da(o) usuária(o) lfs
de formas que podem afetar a construção de
pacotes LFS críticos. Para assegurar que o ambiente da(o)
usuária(o) lfs
esteja limpo,
verifique a presença de /etc/bash.bashrc
e, se presente, mova-o para fora
do caminho. Como a(o) usuária(o) root
, execute:
[ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE
Quando a(o) usuária(o) lfs
não mais
for necessária(o) (no início do
Capítulo 7), você pode seguramente restaurar /etc/bash.bashrc
(se desejado).
Perceba que o pacote Bash do LFS que nós construiremos no Seção 8.34, “Bash-5.2.15” não é
configurado para carregar ou para executar /etc/bash.bashrc
, de modo que esse arquivo é
inútil em um sistema LFS finalizado.
Finalmente, para garantir que o ambiente esteja totalmente preparado para a construção das ferramentas temporárias, force o shell bash a ler o perfil do(a) novo(a) usuário(a):
source ~/.bash_profile