Eu sempre pensei que PS1
era uma variável de ambiente. Mas quando eu verifico o padrão .bashrc
do Ubuntu e verifico PS1
com
grep PS1 /etc/skel/.bashrc
não há export PS1
.
Se não houver exportação, isso significa que não é uma variável de ambiente?
A
PS1
variável, assim como algumas outras variáveis que afetam o shell (veja a seção Variáveis do Shell nobash
manual), não são exportadas e, portanto, não são variáveis de ambiente.PS1
e algumas outras variáveis não são variáveis de ambiente, pois não precisam ser passadas para processos filhos. Por exemplo, aPS1
variável permite que o shell atual saiba como deve ser a aparência do prompt principal, o que provavelmente não é algo que qualquer outro programa esteja interessado. O mesmo vale para variáveis comoHISTFILE
ePROMPT_COMMAND
. Obash
shell também desativa aPS1
variável ao inicializar, a menos que o shell seja interativo.Como regra geral, exporte variáveis que os processos filhos precisarão ver. Não exporte variáveis que serão usadas apenas na sessão atual do shell (pelo próprio shell ou pelo seu script ou comandos interativos).
Observe também que, embora os arquivos de inicialização do shell não exportem uma variável específica, essa variável ainda pode ser exportada pelo pai do shell. Este é o caso da
PATH
variável, por exemplo, assim como possivelmenteTERM
,SHELL
e outras. Isso significa que essas variáveis geralmente não precisam ser exportadas novamente (a menos que você as desative).A
IFS
variável determina como o shell deve executar a divisão de palavras e o comportamento doread
utilitário integrado. O shell geralmente redefine essa variável, pois usar o valor da variável do ambiente pode ter efeitos indesejados e surpreendentes. Em geral,IFS
nunca deve ser exportado. Também é uma boa ideia não definir e exportar aCDPATH
variável, pois ela afeta o comportamento docd
comando, o que pode atrapalhar o comportamento esperado dos scripts.