我有一个想要从远程服务器运行的部署脚本,如果我连接到服务器并手动执行命令,它可以正常工作:
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
问题是,当您发送命令而不是直接登录到 shell 时,它是非交互式的,并且您没有相同的环境,您可以在此阅读更多相关信息:
以下是有关贝壳类型的更多信息:
https://unix.stackexchange.com/questions/38175/difference-between-login-shell-and-non-login-shell