SSH 脚本无权访问完整路径变量

SSH 脚本无权访问完整路径变量

当我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直接在脚本中获取您的。

答案2

将此行添加到 bash 脚本中有效

source ~/.bash_profile

来源

相关内容