.bashrc executa o comando depois de “/ bin / bash --login”

1

Eu tenho esse alias no meu .bashrc:

alias s='cd ~/Documents/projects/s && /bin/bash --login && rvm use ruby-1.9'

Como posso executar a parte correta depois que ela entra no shell de login (/ bin / bash --login)?

    
por Evgeniy Demidov 17.11.2013 / 18:48

2 respostas

2

Quando você executa bash --login , isso inicia um login shell . Uma das peculiaridades de bash em relação aos arquivos de inicialização é que, se for um shell de login, ele só lê ~/.bash_profile (ou se não existir ~/.bash_login , ou se não existir ~/.profile ), não ~/.bashrc mesmo se o shell for interativo.

Para executar código em um shell de login, coloque-o em ~/.bash_profile se for específico para bash, ou em ~/.profile se você quiser que ele aconteça em qualquer login, mesmo quando /bin/sh for invocado.

Para garantir que suas personalizações para shells interativas sejam aplicadas, coloque o seguinte código em ~/.bash_profile :

case $- in
  *i*) if [ -e ~/.bashrc ]; then . ~/.bashrc; fi;;
esac
if [ -e ~/.profile ]; then . ~/.profile; fi
    
por 17.11.2013 / 22:28
0

Como um refinamento da resposta de @Gilles para fazer o Ruby rodar somente quando você pede por ele, eu edito uma cópia do seu arquivo .bashrc e digo ao bash para usá-lo com o parâmetro --rcfile

    
por 18.11.2013 / 00:07