Carregando .profile de .bash_profile ou não usando o bash_profile? [duplicado]

1

Estou em um MAC executando o Yosemite.

Até recentemente, eu só tinha um .profile, no qual adicionei diretórios ao meu PATH.

Agora eu tenho um .bash_profile, que pelo que eu experimentei e depois leio on-line, faz com que o .profile seja ignorado ao abrir uma janela de terminal.

Depois de algumas leituras, eu entendo como o .pofile e o perfil_bash diferem. Eu entendo que o .bash_profile é invocado apenas ao iniciar um shell.

No entanto, ainda não tenho certeza, para um usuário básico, quais são os inconvenientes, se houver, em qualquer um deles:

  • chamando .profile de .bash_profile,
  • ou simplesmente ignorando .bash_profile e definindo todas as variáveis de ambiente que eu possa precisar de um shell no arquivo .profile diretamente.

Por exemplo, eu li aqui que, como o .profile é ignorado quando o .bash_profile está presente, eu poderia simplesmente adicionar

. ~/.profile 

no meu bash_profile para invocar o .profile.

E, alternativamente, embora eu entenda que .bash_profile me permitiria definir variáveis não necessárias fora do bash, eu ainda posso definir tudo o que preciso em .profile e não vejo o que usar .bash_profile traz eu.

    
por Lolo 25.03.2015 / 22:49

1 resposta

2

O sh tradicional lê o arquivo ~/.profile na inicialização quando é um login shell .

Bash, que é compatível com sh, mas oferece recursos adicionais, lê .bash_profile e, se não existir, tenta .profile instead¹. Isso permite que você tenha um .profile para sh simples e um .bash_profile aproveitando os recursos extras do bash quando seu shell de login é bash.

Bash também lê outro arquivo, .bashrc , quando é invocado interativamente. Esse é o lugar para colocar prompts, aliases, configuração de conclusão, etc. No entanto, ele não lê esse arquivo em um shell de login interativo. Portanto, seu .bash_profile deve fornecer .bashrc quando o shell estiver sendo executado de forma interativa - caso contrário, será necessário manter arquivos separados.

Raramente há qualquer motivo para deixar o seguinte conteúdo para .bash_profile :

. ~/.profile
case $- in *i*) . ~/.bashrc;; esac

Coloque coisas do tempo de login como definições de variáveis de ambiente em .profile e coisas para shells interativos em .bashrc .

Se você usar o bash como seu shell de login, talvez não tenha um .profile e coloque o material de login em tempo .bash_profile , além da linha para carregar .bashrc quando interativo.

¹ Também tenta .bash_login antes de .profile , mas isso não é realmente útil.

    
por 26.03.2015 / 02:11