Qual é a diferença entre .profile e .bash_profile e quando você configura qual? (Mac) [duplicado]

23

Qual é a diferença entre .profile e .bash_profile e quando você configura qual?

Ou seja, se eu configurar o .bash_profile , ainda preciso configurar o .profile ?

    
por Imran 02.05.2011 / 23:05

4 respostas

11

Assumindo que bash é seu shell padrão, as diferenças são descritas na página bash man ( man bash ):

   When bash is invoked as an interactive login shell, or as  a  non-interac-
   tive  shell  with the --login option, it first reads and executes commands
   from the file /etc/profile, if that file exists.  After reading that file,
   it  looks  for  ~/.bash_profile,  ~/.bash_login,  and  ~/.profile, in that
   order, and reads and executes commands from the first one that exists  and
   is readable.  The --noprofile option may be used when the shell is started
   to inhibit this behavior.

Há mais detalhes na página man que aborda o modo de compatibilidade POSIX-shell, que é de onde vem .profile . Leia toda a seção da página man para todos os detalhes.

    
por 02.05.2011 / 23:25
5

Se você configurar .bash_profile , também não precisará configurar .profile .

Gosto de manter meus próprios aliases e comandos em .profile , de modo que, se eu estragar tudo, sei que sempre posso excluir o .profile sem afetar o sistema em geral ou outros aplicativos que modificam .bash_profile ( como MacPorts).

Para usar um .profile , talvez seja necessário incluir a linha source ~/.profile no seu .bash_profile para que o arquivo .profile seja lido (veja a resposta de Ned Deily).

    
por 05.07.2011 / 19:30
2

.profile é executado por bash quando você obtém um processo de shell normal - por exemplo, você abre uma ferramenta de terminal. .bash_profile é executado por bash para shells de login - então é quando você faz o telnet / ssh em sua máquina remotamente, por exemplo. Por exemplo, se você ssh remotamente em uma máquina (digamos que você abra um X Terminal), você obterá inicialmente .bash_profile executado. Se nesse XTerminal você digitar "xterm" e gerar outro X Terminal, então .profile será executado para a segunda instância do XTerminal. Os arquivos residem no seu diretório pessoal (~). Se eu não estou confundindo, por padrão, ambos executam o ~ / .bashrc, então você pode editá-lo para configurar configurações / variáveis comuns para ambos os invólucros de login e não login (por exemplo, definindo PATH, alguns apelidos / atalhos, etc.). Você pode querer ocasionalmente configurar certas coisas de maneira diferente para esses dois, mas eu nunca encontrei essa necessidade - no entanto, a possibilidade existe.

    
por 02.05.2011 / 23:13
1

para a configuração rápida e simples (onde você não quer complicar as coisas) simplesmente configure tudo em seu ~ / .profile. Somente quando você se deparar com alguns problemas (mas provavelmente nunca aprenderá) sobre o .bash_login ou .bash_profile;)

Eu também estou no OS X e nunca precisei de .bash_profile ou .bash_login e usei somente .profile, mas sua milhagem pode variar ...

    
por 02.05.2011 / 23:54