当我登录我的ArchLinux服务器和类型:
$echo $PATH
I get...
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/bin/core_perl
但是当我未登录并尝试时:
ssh myyser@mysever 'echo $PATH'
i get..
/usr/bin:/bin:/usr/sbin:/sbin
我的 /etc/profile 中的 PATH 是正确的,但是 ssh 似乎没有加载它。
有什么办法可以修复所有用户/ssh 会话的问题吗?
当我使用 ubuntu 时不会发生这种情况
根据建议在此处发布尤金·马耶夫斯基‘EldoS 公司
答案1
如果您使用 Bash 作为用户的默认 shell,则您的ssh
命令将启动非交互式非登录 shell,因此它不会处理/etc/profile
。您需要在脚本中获取该文件。
答案2
当您通过 运行命令时ssh
,它不会在远程主机上启动登录 shell。这方面的实际影响各不相同,但通常意味着运行的 shell 初始化文件登录时将被忽略。另一方面,每个 shell 实例的 shell 初始化文件仍将被处理。
如果您使用的是bash
,则意味着仅使用您的文件。我经常在我的文件.bashrc
中放入类似这样的内容:.bashrc
if [ ! "$RAN_PROFILE" ]; then
. $HOME/.profile
fi
在我的底部.profile
:
RAN_PROFILE=1
export RAN_PROFILE
这确保了我.profile
甚至可以使用非登录 shell 获得服务。
答案3
我修复了这个问题,将路径添加到/etc/环境
PATH=/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/bin/core_perl
不知道这是否是一个好的做法,但确实有效。
谢谢你!