Quando -c
é especificado, bash
não está sendo executado como interativo ou um login shell para que ele não leia os mesmos scripts de inicialização. Qualquer coisa definida em /etc/profile
, ~/.bash_profile
, ~/.bash_login
ou ~/.profile
seria definitivamente ignorada.
Além disso, conforme explicado na página bash
man:
Bash attempts to determine when it is being run with its standard input connected to a network connection, as when executed by the remote shell daemon, usually
rshd
, or the secure shell daemonsshd
. If bash determines it is being run in this fashion, it reads and executes commands from~/.bashrc
and~/.bashrc
, if these files exist and are readable.
Então, se você não acha que está se conectando através da rede, talvez não leia o arquivo .bashrc
, o que pula tudo que não foi ignorado na etapa anterior.
solução
Para contornar esse problema, eu criaria um script que definisse o PATH
como algo adequado e depois executasse o comando. Se você quiser usar os arquivos .profile
ou outros arquivos existentes, poderá fazer a sua fonte seu roteiro.