環境 centos6.5
狀況 A機器 ssh user@B機器 『command』 執行命令(B機器添加了對A機器的信任)
提示 ‘bash: node: command not found’
使用 ssh user@B機器 手動執行命令是沒有問題的 echo $PATH;node -v 也是正常的
-bash-4.1$ ssh root@B機器IP
Last login: Sat Jun 18 15:14:35 2016 from A機器IP
[root@IOS-Account ~]# echo $PATH;node -v
/data/soft/node/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/sbin:/root/bin
v4.4.4
使用 ssh user@B機器 ‘echo $PATH;node -v’ 列印的環境變數路徑 與login 方式列印的路徑不一樣.
-bash-4.1$ ssh root@B機器IP ‘echo $PATH;node -v’
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/sbin
bash: node: command not found
根據這篇文章, 找到了原因.
以下這兩個登錄方式的環境變數是不一樣的
ssh user@ip 登錄以後是有交互的
ssh user@ip ‘command’ 登錄以後直接執行命令,然後退出
最後解決方式是
ssh root@B機器IP ‘source ~/.bash_profile;echo $PATH;node -v’
1
結果:
-bash-4.1$ ssh root@B機器IP ‘source ~/.bash_profile;echo $PATH;node -v’
/data/soft/node/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/sbin:/sbin:/root/bin
v4.4.4
原因總結:其實,就是SSH到遠程機器的用戶的環境變數,沒有增加遠程命令的執行許可權與設置 。
以下文章點擊率最高
Loading…