Você está dizendo ao shell na outra máquina para obter o arquivo ./variables
, que não está presente no pwd
desse shell. Passo a passo, parece assim:
-
Este comando se conecta via ssh e envia as linhas do local
test.sh
ssh -i "auth.key" user@host 'bash -s' < test.sh
-
As shells remotas são iniciadas pela conexão
ssh
e, em seguida, obtêm as seguintes linhas:-
#!/bin/bash
A interpretação desta linha pelo shell remoto depende do shell que é. A maioria das conchas tratará essa linha como um comentário. Se o shell forsh
, o shell remoto não se tornarábash
, porque a linha shebang é válida apenas em arquivos de script e os scripts precisam do conjunto de bits executáveis. -
source ./variables.txt
Agora, o shell remoto é instruído a origem do arquivovariables.txt
no diretório de trabalho atual. Se o arquivo não estiver lá, o shell lançará um erro. No seu caso, o shell é Bash, e o erro é:bash: line 2: ./variables.txt: No such file or directory
-
echo $name
Como$name
está vazio, há apenas uma linha vazia impressa no terminal.
-
Para confirmar isso, coloque um arquivo variables.txt
no diretório inicial remoto com uma linha diferente para a origem, por exemplo:
name=remotehost
E execute seu script de teste como antes.