O problema é que quando você envia o comando e não está sendo logado diretamente no shell é um não-interativo e você não tem o mesmo ambiente, você pode ler mais sobre isso em:
Aqui estão mais informações sobre o tipo de shells:
Eu tenho um script de implantação que eu quero executar de um servidor remoto, se eu me conectar ao servidor e o comando manualmente, ele funciona bem:
ssh root@server
cd /some-deploy-folder
node do-something.js
Mas se eu tentar fazer o mesmo, passando-o para um único comando para o ssh:
ssh -t root@localhost <<EOF
cd /some-deploy-folder
node do-something.js
exit
EOF
O Bash não consegue encontrar o comando node
reportando node: command not found
Existe alguma razão para que passar os comandos EOL
diretamente para ssh
não esteja configurando corretamente o ambiente?