Por que executar um comando sobre SSH sem um terminal visual usa um local PATH diferente?

0

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?

    
por Fields 18.07.2017 / 17:20

1 resposta

1

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 .

    
por 18.07.2017 / 19:26

Tags