Compreendendo .bashrc e .bash_profile [duplicado]

1

Eu sou um n00b quando se trata de trabalhar em env Linux e gostaria de saber o propósito de .bashrc e .bash_profile . Eu só sei que eles são específicos para cada conta de usuário. Quais recursos / comportamento podem ser adicionados / modificados pela implementação de algo nesses arquivos

    
por name_masked 18.05.2012 / 19:21

2 respostas

5

Primeiro, .bash_profile é usado apenas para shells de bash de login. .bashrc é usado para todos os outros shell bash. Portanto, .bash_profile normalmente irá fornecer .bashrc , se existir, para que você não precise duplicar nenhum comando que queira executar para cada shell, seja ele um shell de login ou não.

Em geral, há duas coisas que você faz com esses scripts: Executar programas e definir variáveis de ambiente. Qualquer coisa que você queira executar quando fizer o login, coloque em .bash_profile , qualquer coisa que você queira definir em cada shell (por exemplo, se você usa screen ou abrir um terminal) coloque .bashrc .

Algumas coisas do meu próprio .bashrc (como exemplo):

  • Definir $PS1
  • Ativar regras especiais de conclusão de guias
  • Defina opções de shell executando shopt
  • Configurar aliases de comando

Do meu .bash_profile :

  • Origem .bashrc
  • Adicione diretórios a $PATH
  • Executar ssh-agent

É importante notar que .bash_profile é executado apenas se você estiver fazendo login diretamente em um shell bash. Se você está iniciando uma sessão X, você está logando no servidor X que terá seu próprio login script (tipicamente algo como .xsession )

    
por 18.05.2012 / 20:59
4

Tudo é explicado no manual do Bash na seção intitulada "Bash Startup Files": link

ATUALIZAÇÃO: Veja a versão curta:

Quando o Bash é invocado como um shell de login interativo ou como um shell não interativo com a opção --login , ele primeiro lê e executa comandos do arquivo /etc/profile , se esse arquivo existir. Depois de ler esse arquivo, ele procura ~/.bash_profile , ~/.bash_login e ~/.profile , nessa ordem, e lê e executa comandos do primeiro que existe e é legível.

Quando um shell interativo que não é um shell de login é iniciado, o Bash lê e executa comandos de ~/.bashrc , se esse arquivo existir.

Quando o Bash é iniciado de forma não interativa, para executar um script de shell, por exemplo, ele procura a variável BASH_ENV no ambiente, expande seu valor se aparecer lá e usa o valor expandido como o nome de um arquivo para ler e executar.

    
por 18.05.2012 / 20:24

Tags