Por que preciso executar o comando source para tornar o alias .bash_profile disponível?

4

Meu .bash_profile é como abaixo:

alias l='ls -l'
alias p='pwd'
alias sites='cd /home/caveman/sites'
alias time_card='cd /home/caveman/sites/time-card/time-card'
alias ping='ping google.com'
alias bash_profile='gedit /home/caveman/.bash_profile'
alias webroot='cd /var/www'

sempre que eu fizer login na minha máquina, preciso executar o source .bash_profile para disponibilizar todo o alias.

Vocês podem descobrir onde está o problema?

    
por mushfiq 20.09.2011 / 17:55

2 respostas

6

O ~/.bash_profile é lido apenas na sessão de login.

Além disso, ter um ~/.bash_profile impede o fornecimento de ~/.profile , que é o arquivo preferencial a ser usado para o shell de login na configuração bash do Ubuntu.

Quando você efetua login no Display Manager (suponho GDM), o ~/.profile é lido por padrão (não sei se o GDM segue as regras bash e leio ~/.bash_profile , se existir).

Mesmo se ~/.bash_profile foram lidos do GDM, os aliases não são herdados, então o shell que você tem em um terminal gráfico (que não é um shell de login) não pode vê-los.

A solução é: coloque seus aliases em ~/.bashrc e use aliases apenas para coisas muito simples, caso contrário use funções.

O arquivo ~/.bashrc é lido por shells interativos que não são de login e é originado em ~/.profile , de modo que seu conteúdo também está disponível em shells de login.

    
por enzotib 20.09.2011 / 18:12
1

Você pode adicionar os aliases a ~ / .bash_aliases

    
por ed. 20.09.2011 / 18:14