![ssh:通过 EOL 传递命令时没有设置 $PATH?](https://linux22.com/image/1536822/ssh%EF%BC%9A%E9%80%9A%E8%BF%87%20EOL%20%E4%BC%A0%E9%80%92%E5%91%BD%E4%BB%A4%E6%97%B6%E6%B2%A1%E6%9C%89%E8%AE%BE%E7%BD%AE%20%24PATH%EF%BC%9F.png)
我有一个想要从远程服务器运行的部署脚本,如果我连接到服务器并手动执行命令,它可以正常工作:
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