当我ssh
进入主机并echo $PATH
:
$ ssh my@host
$ echo $PATH
我得到的值$PATH
与本地运行脚本时的值不同:
ssh my@host '\
echo $PATH;'
知道为什么吗?
笔记:ssh
当从脚本与[其他] CLI 进行 ing时,我似乎没有获得完整路径变量。
答案1
这是因为当您通过 ssh ( ssh user@host 'command'
) 运行命令时,它会打开一个非登录 shell。可以找到登录 shell 和非登录 shell 之间差异的详细分析在这个问题上。从本质上讲,导致您出现问题的原因是,当您通过 ssh 运行命令时,您的命令~/.bash_profile
没有来源,这意味着对其所做的路径的任何修改都将不可用。
解决方案是将它们移至您的 中~/.bashrc
,该文件是在打开非登录 shell 时获取的,或者如您所发现的,.bash_profile
直接在脚本中获取您的。