A partir da página de manual ssh(1)
: "Se o comando for especificado, ele será executado no host remoto em vez de um shell de login."
Então, resumindo, quando você realmente loga na máquina, o bash é iniciado como um shell de login e carrega os arquivos apropriados, quando você se conecta remotamente e emite um comando no lugar do bash, o que significa que esses arquivos NÃO carga. Você pode contorná-lo usando su -l -c
ou similar na parte de comando do ssh.
Em alguns casos, vi -t
argumento para o trabalho ssh (alocar tty) também.
Editar 1 :
Eu acho que as informações do PATH que você encontrou, que o caminho padrão (a menos que nós o sobrescrevamos) é o compilado no sshd. Certifiquei-me de que meu / etc / profile, / etc / bash *, dotfiles locais, etc. não possuísse nenhuma informação de PATH, então eu fiz logon e ainda tinha um PATH. Eu procurei por este em sshd e encontrei lá. Então é assim que a manpage diz:
ahnberg@remote$ strings /usr/sbin/sshd | grep -i x11 | grep bin
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
Em seguida, adiciono PATH=$PATH:/my/test
ao topo do arquivo .bashrc
no controle remoto e verifique novamente:
ahnberg@local$ ssh ahnberg@remote "env | grep PATH"
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/my/test
Então eu posso absolutamente influenciá-lo, e o PATH padrão é aquele compilado em sshd. :)