entendendo a página do manual “ssh”

3

Meu objetivo é usar mkdir no host remoto.

Na página ssh man, que no Ubuntu vem do BSD, diz

If command is specified, it is executed on the remote host instead of a
 login shell.

O comando seria o único no final disso:

ssh user@remoteHost command

Para o meu propósito, o comando seria mkdir --parents path/folder . Qual é o significado da frase "é executada no host remoto em vez de um shell de login"?

O que isso significa? Isso significa que um shell não-login é usado? O meu entendimento é que tanto os invólucros de login como os não-login envolvem .bashrc e assim a diferença é que o perfil não é originado para um shell não-login. Por que queremos ignorar o perfil de user ?

    
O
por H2ONaCl 02.03.2017 / 06:11

1 resposta

3

  

Isso significa que um shell não-login é usado?

Sim. (Depende do que você entende por "shell de login").

  

Meu entendimento é que ambos os shells de login e não-login envolvem .bashrc e, portanto, a diferença é que o perfil não é originado por um shell que não seja de login.

incorreto. Um bash de login lê .profile e, como acontece, .profile sources .bashrc do Ubuntu. Um bash interativo de não-login lê .bashrc . Uma chamada bash não-login, não interativa não lê .bashrc (ou .profile , para esse assunto).

Quando você executa ssh foo command , o comando é executado por um shell não interativo. No entanto, um shell não-login executado pelo SSH é um caso especial e o bash lê .bashrc . Outros shells podem ou não ler seus respectivos arquivos rc, então pode ser o caso de alguns shells que nenhum arquivo de configuração é lido. O Bash não é o melhor e o fim de todos os shells.

Os shells não interativos são executados por vários motivos e, geralmente, não há motivo para carregar o conjunto completo de personalizações definido por um usuário.

  

Por que queremos ignorar o perfil do usuário?

Veja acima. Além disso, o SSH tem outras maneiras de definir variáveis de ambiente.

    
por muru 02.03.2017 / 06:38

Tags