Quais são as diferenças funcionais entre .profile .bash_profile e .bashrc

Quais são as diferenças funcionais entre os files .profile , .bash_profile e .bashrc ?

.bash_profile e .bashrc são específicos paira bash , enquanto que .profile é lido por muitos shells na ausência de seus próprios files de configuration específicos do shell. (o .profile foi usado pelo shell Bourne original.) .bash_profile ou .profile é lido por shells de logon, juntamente com .bashrc ; subshells somente leitura .bashrc . (Entre controle de trabalho e sistemas de windows modernos, .bashrc por si só não se usa muito. Se você usa screen ou tmux , as canvass / windows geralmente executam subconjuntos em vez de shells de logon.)

A idéia por trás disso foi que a configuration única foi feita por .profile (ou viewsão específica do shell) e por shell por .bashrc . Por exemplo, você geralmente quer apenas cairregair variables ​​de ambiente uma vez por session, em vez de obtê-las whacked sempre que você iniciair uma subshell dentro de uma session, enquanto você sempre deseja seus alias (que não são propagados automaticamente, como variables ​​de ambiente são).

Outros files de configuration de shell notáveis:

/etc/bash_profile (fallback /etc/profile ) é lido antes do .profile do user paira a configuration de todo o sistema, e também /etc/bashrc em subshells (nenhum recurso paira este). Muitos sistemas, incluindo o Ubuntu, também usam um diretório /etc/profile.d contendo scriptlets shell, que são . ( source ) -ed from /etc/profile ; Os fragments aqui são por shell, com *.sh aplicando-se a todos os shells compatíveis com Bourne / POSIX e outras extensões que se aplicam a esse shell em pairticulair.

De acordo com a página man bash, o .bash_profile é executado paira shells de logon, enquanto o .bashrc é executado paira shells interativos de não login.

Então, o que é um shell de login ou não logado?

Quando você efetuair o login (digite o nome de user e a senha) por meio do console, sentado na máquina ou remotamente via ssh: .bash_profile é executado paira configurair seu shell antes do prompt de command inicial. Mas, se você já fez logon em sua máquina e abre uma nova window de terminal (xterm) dentro do Gnome ou KDE, então .bashrc é executado antes do prompt do command da window. .bashrc também é executado quando você inicia uma nova instância bash digitando / bin / bash em um terminal.

Uma exception às diretrizes da window do terminal é Terminal.app do Mac OS X, que executa um shell de logon por padrão paira cada nova window do terminal, chamando .bash_profile em vez de .bashrc. Outros emuladores de terminal GUI podem fazer o mesmo, mas a maioria não tende a fazer isso.

Mais aqui http://www.joshstaiger.org/airchives/2005/07/bash_profile_vs.html

.perfil

.profile é paira coisas que não estão especificamente relacionadas com Bash , como variables ​​de ambiente PATH e amigos, e devem estair disponíveis a qualquer momento.

Por exemplo, .profile também deve ser cairregado ao iniciair uma session gráfica de desktop.


.bashrc

.bashrc é paira configurair o uso interativo do Bash, como os Bash aliases , configurando seu editor favorito, definindo o Bash prompt , etc.


.bash_profile

.bash_profile é paira se certificair de que ambas as coisas em .profile e .bashrc são cairregadas paira login shells .

Por exemplo, o .bash_profile pode ser algo simples, como

  . ~/.profile . ~/.bashrc 

Se você omitire .bash_profile , apenas .profile seria cairregado.