Aliases de bash não selecionados no login inicial

2

Estou rodando Debian 8.5 (Jessie) em um virtualbox vm. Eu tenho alguns aliases bash que eu não consigo executar quando eu inicialmente logar na minha vm. No entanto, quando executo bash de dentro do shell, eles funcionam. Como posso configurar meu sistema para que eles funcionem na inicialização?

yourstruly@mate:~$ tail ~/.bash_aliases
alias quit='exit'
alias reboot='sudo shutdown -r now'
alias halt='sudo shutdown -h now'

yourstruly@mate:~$ halt
-bash: halt: command not found
yourstruly@mate:~$ bash
yourstruly@mate:~$ halt
Connection to localhost closed by remote host.
Connection to localhost closed.

Eu coloquei linhas em .bashrc para incluir .bash_aliases .

yourstruly@mate:~$ tail ~/.bashrc

if [ -f ~/.bash_include ]; then
  . ~/.bash_include
fi

if [ -f ~/.bash_alias ]; then
  . ~/.bash_alias
fi
    
por user394 04.09.2016 / 23:41

1 resposta

2

Quando o bash inicia um shell login interativo, ele executa o primeiro encontrado dos seguintes arquivos: ~/.bash_profile , ~/.bash_login e ~/.profile .

Por contraste, ~/.bashrc é executado apenas para shells interativos não-login .

A solução é fornecer ~/.bashrc em qualquer~/.bash_profile, ~/.bash_login e ~/.profile que você realmente usa. Adicione uma linha como esta:

if [[ $- = *i* ]]; then . ~/.bashrc; fi

A variável especial $- contém as opções de shell ativas e os shells interativos incluem i na lista de opções ativas. Portanto, isso gera ~/.bashrc para shells interativos e somente para shells interativos.

    
por 05.09.2016 / 00:21