Quais são as diferenças funcionais entre os arquivos .profile, .bash_profilee .bashrc?
Quais são as diferenças funcionais entre os arquivos .profile, .bash_profilee .bashrc?
Respostas:
.bash_profilee .bashrcsão específicos bash, considerando que .profilesão lidos por muitos shells na ausência de seus próprios arquivos de configuração específicos do shell. ( .profilefoi usado pelo shell Bourne original.) .bash_profileou .profileé lido por shells de login, junto com .bashrc; subcascas somente leitura .bashrc. (Entre o controle de tarefas e os modernos sistemas de janelas, .bashrcpor si só não se acostuma muito. Se você usa screenou 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 .profilepara configuração em todo o sistema e da mesma forma /etc/bashrcem subshells (sem fallback para este). Muitos sistemas, incluindo o Ubuntu, também usam um /etc/profile.ddiretório contendo shell scriptlets, os quais são .( source) -ed /etc/profile; os fragmentos aqui são por shell, com *.shaplicaçã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 PATHe amigos, e devem estar disponíveis a qualquer momento.
Por exemplo, .profiletambé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 aliasesdefinir seu favorito editor, definir Bash promptetc.
.bash_profile
.bash_profile destina-se a garantir que ambas as coisas sejam carregadas .profilee .bashrccarregadas login shells.
Por exemplo, .bash_profilepoderia ser algo simples como
. ~/.profile
. ~/.bashrc
Se você omitir .bashrc, somente .profileserá 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. .bashrctambém é executado quando você inicia uma nova instância do bash digitando /bin/bashum 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_profilevez de .bashrc. Outros emuladores de terminal da GUI podem fazer o mesmo, mas a maioria costuma não fazer.
Mais aqui .