小编Ara*_*anu的帖子

非交互式 ssh 会话在某些系统上没有设置 PATH

我将我的环境设置为.profile. 我的.profile是幂等的,,,.bash_profile所有的源码。这样,无论我使用哪种 bourne 兼容 shell,也无论 shell 是交互式 shell 还是登录 shell,我总是获得相同的环境。.bashrc.kshrc.zshrc.profile

这也适用于非交互式ssh(1)使用,尽管我不确定到底为什么。

iridium:aram$ ssh sunos.mgk.ro 'env|grep ^PATH'
PATH=.:/home/aram/bin:/home/aram/bin/sunos:/home/aram/bin/sunos/amd64:/home/aram/bin/sunos/386:/home/aram/go/bin:/opt/local/bin:/opt/local/sbin:/usr/gnu/bin:/usr/bin:/sbin:/usr/sbin:/usr/sfw/bin:/usr/local/bin:/usr/local/sbin:/home/aram/plan9/bin
iridium:aram$ ssh iridium 'env|grep ^PATH'
PATH=.:/Users/aram/bin:/Users/aram/bin/darwin:/Users/aram/bin/darwin/amd64:/Users/aram/bin/darwin/386:/Users/aram/go/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/pkg/bin:/usr/pkg/sbin:/usr/local/plan9/bin
iridium:aram$ ssh crimson 'env|grep ^PATH'
PATH=.:/home/aram/bin:/home/aram/bin/linux:/home/aram/bin/linux/amd64:/home/aram/bin/linux/386:/bin:/usr/bin:/sbin:/usr/sbin:/usr/games:/usr/local/bin:/usr/local/sbin
Run Code Online (Sandbox Code Playgroud)

然而,在少数系统上,这不起作用。

iridium:aram$ ssh ci20 'env|grep ^PATH'
PATH=/usr/bin:/bin
Run Code Online (Sandbox Code Playgroud)

我一直在努力使这项工作成功,但没有成功。我努力了:

  • 切换到另一个 shell 而不是 bash
  • 在 sshd_config 中禁用 PAM
  • 启用 PAM 后,在 /etc/environment 中设置 BASH_ENV

这些没有任何效果,无论 PAM 设置如何,似乎 /etc/environment 都根本不会被读取。

请不要建议我应该强制 bash 在 ssh 调用中进行交互,或者我应该在 ssh 调用中手动获取环境,我正在尝试解决这里的根本问题。

在尝试调试这个问题时,我学到了一些关于 bash 的知识。如果标准输入是套接字,那么 bash 似乎总是会获取 …

ssh terminal bash bashrc .bash-profile

5
推荐指数
1
解决办法
3345
查看次数

标签 统计

.bash-profile ×1

bash ×1

bashrc ×1

ssh ×1

terminal ×1