У меня есть сценарий развертывания, который я хочу запустить с удаленного сервера, если я подключаюсь к серверу и выполняю команду вручную, он работает нормально:

ssh root@server
cd /some-deploy-folder
node do-something.js

Но если я попытаюсь сделать то же самое, передав в ssh одну команду:

ssh -t root@localhost <<EOF
  cd /some-deploy-folder
  node do-something.js     
  exit
EOF

Bash не может найти node сообщения о командах node: command not found

Есть ли какая-то причина, по которой передача команд EOL непосредственно в ssh неправильно настраивает среду?

1 ответ1

1

Проблема в том, что когда вы отправляете команду, а не входите непосредственно в оболочку, она является неинтерактивной, и у вас нет той же среды, вы можете прочитать об этом подробнее на:

https://askubuntu.com/questions/698957/ssh-into-a-machine-and-then-launch-an-interactive-command-line-program

Вот больше информации о типе снарядов:

https://unix.stackexchange.com/questions/50665/what-is-the-difference-between-interactive-shells-login-shells-non-login-shell

https://unix.stackexchange.com/questions/38175/difference-between-login-shell-and-non-login-shell

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .