Para exportar ou não exportar bash PS1 variável

7

Eu passei muito tempo lendo em logins e shells interativos e por que alguém deveria ou não definir variáveis de ambiente, funções de shell, etc. nos vários arquivos de perfil e bashrc. Em esta postagem foi mencionado que coisas específicas do bash como opções de prompt devem ser definidas em ~ / .bashrc. Isso me levou a pensar sobre a variável PS1. Em todos os exemplos que vi sobre isso, eles têm algo como export PS1="" . Isso deve ser realmente exportado para o ambiente, pois só tem significado para o bash? Apenas ter PS1="" no meu ~ / .bashrc produz o efeito pretendido para mim, mas estou me perguntando se estou perdendo alguma coisa.

    
por Mike Sweeney 05.12.2015 / 19:28

1 resposta

12

Isso está correto: PS1 só é significativo em instâncias interativas do bash, portanto, ele deve ser definido em ~/.bashrc e não deve ser exportado. PS1 também é significativo em outros shells, mas tem um significado diferente, porque as expansões de prompt diferem entre os shells. De fato, mesmo entre instâncias de bash, PS1 pode ter diferentes significados, pois o significado depende das opções de shell (pelo menos promptvars ).

A exportação de PS1 para o ambiente de .profile é um retrocesso para a década de 1970, quando havia apenas um shell que o usava (o shell Bourne) e não tinha um arquivo de configuração. Ele ainda funciona hoje se você sempre usar o mesmo shell e nunca configurá-lo de forma diferente. Mas todos os shells modernos que não são projetados apenas para script (csh, ksh, bash, zsh,…) lêem um arquivo de configuração quando iniciados interativamente ( .cshrc , .kshrc , .bashrc , .zshrc ,…), então o método dos anos 70 não é mais necessário. Definir PS1 e outras configurações específicas do shell em um arquivo específico do shell, e não exportá-lo para o ambiente, evita quebrar coisas quando você usa uma configuração de shell diferente ou um shell diferente ou um terminal diferente que não é capaz de mostrar sua habitual vivacidade pronta. A configuração de PS1 em um arquivo específico do shell funciona o tempo todo, ao passo que defini-lo em .profile e exportá-lo só funciona em casos “simples”, portanto não há motivos para não fazer da maneira certa, mas há muitos maus tutoriais em toda a web e até configurações padrão ruins em distribuições. C'est la vie .

    
por 06.12.2015 / 00:32