Quais são as diferenças funcionais entre os arquivos .profile
, .bash_profile
e .bashrc
?
Quais são as diferenças funcionais entre os arquivos .profile
, .bash_profile
e .bashrc
?
Respostas:
.bash_profile
e .bashrc
são específicos bash
, considerando que .profile
são lidos por muitos shells na ausência de seus próprios arquivos de configuração específicos do shell. ( .profile
foi usado pelo shell Bourne original.) .bash_profile
ou .profile
é lido por shells de login, junto com .bashrc
; subcascas somente leitura .bashrc
. (Entre o controle de tarefas e os modernos sistemas de janelas, .bashrc
por si só não se acostuma muito. Se você usa screen
ou tmux
, as telas / janelas geralmente executam subshells em vez de shells de login.)
A idéia por trás disso era que a configuração única era feita por .profile
(ou sua versão específica do shell) e as coisas por shell da .bashrc
. Por exemplo, você geralmente deseja carregar variáveis de ambiente apenas uma vez por sessão, em vez de fazê-las bater sempre que iniciar um subshell dentro de uma sessão, enquanto você sempre deseja seus aliases (que não são propagados automaticamente como as variáveis de ambiente).
Outros arquivos de configuração de shell notáveis:
/etc/bash_profile
(fallback /etc/profile
) é lido antes do usuário .profile
para configuração em todo o sistema e da mesma forma /etc/bashrc
em subshells (sem fallback para este). Muitos sistemas, incluindo o Ubuntu, também usam um /etc/profile.d
diretório contendo shell scriptlets, os quais são .
( source
) -ed /etc/profile
; os fragmentos aqui são por shell, com *.sh
aplicação a todos os shells compatíveis com Bourne / POSIX e outras extensões aplicáveis a esse shell em particular.
.perfil
.profile
é para coisas que não estão especificamente relacionadas Bash
, como variáveis de ambiente PATH
e amigos, e devem estar disponíveis a qualquer momento.
Por exemplo, .profile
também deve ser carregado ao iniciar uma sessão gráfica da área de trabalho.
.bashrc
.bashrc
é para configurar o uso interativo do Bash, como Bash aliases
definir seu favorito editor
, definir Bash prompt
etc.
.bash_profile
.bash_profile destina-se a garantir que ambas as coisas sejam carregadas .profile
e .bashrc
carregadas login shells
.
Por exemplo, .bash_profile
poderia ser algo simples como
. ~/.profile
. ~/.bashrc
Se você omitir .bashrc
, somente .profile
será carregado.
De acordo com a página do manual bash, .bash_profile
é executado para shells de logon, enquanto .bashrc
é executado para shells interativos sem logon.
Então, o que é um shell de login ou não-login?
Quando você faz login (digite nome de usuário e senha) no console, sentado na máquina ou remotamente via ssh: .bash_profile
é executado para configurar seu shell antes do prompt de comando inicial. Mas, se você já fez login na sua máquina e abre uma nova janela de terminal (xterm) dentro do Gnome ou KDE, .bashrc
é executada antes do prompt de comando da janela. .bashrc
também é executado quando você inicia uma nova instância do bash digitando /bin/bash
um terminal.
Uma exceção às diretrizes da janela do terminal é o Terminal.app do Mac OS X, que executa um shell de login por padrão para cada nova janela do terminal, chamando em .bash_profile
vez de .bashrc
. Outros emuladores de terminal da GUI podem fazer o mesmo, mas a maioria costuma não fazer.
Mais aqui .