linha não é executada em .bash_profile e .bashrc no meu Mac OSX Snow Leopard
-
22-09-2019 - |
Pergunta
Acabei de instalar o Ruby Version Manager (RVM), que está funcionando bem, mas me pediu para colocar a seguinte linha em meus arquivos /.bash_profile e ~/.bashrc:
if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi
olhando o conteúdo vejo o seguinte:
tammam56$ cat /.bash_profile
export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"
if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi
tammam56$ cat ~/.bashrc
export PATH=/usr/local/bin:$PATH
export MANPATH=/usr/local/man:$MANPATH
if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi
No entanto, quando eu inicio uma nova janela do Terminal, ele não executa o comando. Eu sei disso, pois defino minha versão Ruby padrão para 1.9 e se eu executar a linha manualmente, chego à versão correta:
tammam56$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0]
Macintosh-37:~ tammam56$ if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi
Macintosh-37:~ tammam56$ ruby -v
ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-darwin10.2.0]
Alguma idéia de como posso consertar isso?
Obrigado,
Tam
Solução
Se você tiver um ~/.profile, tente adicionar a seguinte linha a ele.
se [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ;então fonte /Users/tammam56/.rvm/scripts/rvm ;fi
Outras dicas
Você confirmou que outros comandos em .bashrc e/ou .bash_profile foram atualizados corretamente?
Em seguida, você deve confirmar se o Terminal está iniciando o shell como um shell de login ou não (veja em Preferências -> Inicialização).
Na página de manual do bash:
Quando o bash é invocado como um shell de login interativo ou como um não-inter- shell ativo com a opção --login, ele primeiro lê e executa com- mands 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.A opção --noprofile pode ser usada quando o shell é iniciado para inibir esse comportamento.
Quando um shell interativo que não é um shell de login é iniciado, o Bash Reads e executa comandos de ~/.bashrc, se esse arquivo existir.Este pode ser inibido usando a opção --norc.A opção --rcfile file forçará o bash a ler e executar comandos do arquivo em vez de ~/.bashrc.
Descobri que a solução mais fácil para esse problema era mover todo o conteúdo do meu arquivo ~/.bashrc (então meu ~/.bashrc agora está vazio) para um novo arquivo ~/.bash_profile.Agora todas as guias Terminal.app executam automaticamente todas as linhas incluídas em ~/.bash_profile.Isso também se aplica ao iTerm.