Porque, dependendo do tipo de sessão (login / não-login, interativo / não interativo), seu .profile ou seu .bashrc são considerados ou não.
Para distinguir entre os vários tipos de shells, veja aqui .
Ao executar uma sessão SSH que simplesmente inicia um comando em vez de realmente conectá-lo, parece que minha variável ambiental PATH difere de quando eu me conecto à sessão SSH normalmente, e está faltando a localização de meus binários para comandos bash. Por que isso seria e como posso evitá-lo?
Conexão normal de: ssh root @ host Gera um PATH env de
PATH='/sbin:/usr/sbin:/proc/boot'
Um ssh para executar o comando mas não se conectar ao terminal diretamente (ssh root @ host ls) produz "ls: comando não encontrado". Após inspeção adicional, a variável ambiental PATH está ausente / proc / boot e, portanto, está faltando a localização do arquivo binário ls.
O PATH env desta sessão 'não terminal' produz:
PATH='/usr/sbin:/sbin'
mas NÃO / proc / boot, por isso não pode chamar ações padrão como ls, mkdir, etc.
Por que isso? Como posso obter o meu PATH adequado ao simplesmente executar um comando através do SSH, mas não conectando diretamente a um terminal exibido?
Porque, dependendo do tipo de sessão (login / não-login, interativo / não interativo), seu .profile ou seu .bashrc são considerados ou não.
Para distinguir entre os vários tipos de shells, veja aqui .