【问题标题】:Configuring PATH globally for SSH remote commands为 SSH 远程命令全局配置 PATH
【发布时间】:2011-05-02 06:10:39
【问题描述】:

在通过 SSH 执行命令时,Debian Linux 上的 PATH 变量有问题。例如,当我使用 GIT 或 Mercurial 并将它们安装在 /opt 而不是 /usr/local 中时,就会发生这种情况。但我也可以像这样轻松地重现它:

当我通过 SSH 以正常方式登录服务器然后执行 echo $PATH 时,我会得到我在 /etc/profile 中配置的 PATH:

/usr/local/bin:/usr/bin:/bin:/usr/games:/opt/maven/bin:/opt/ant/bin:/opt/mercurial/bin:/opt/git/bin 

但是当我改为 ssh user@server 'echo $PATH' 时,我得到了这个:

/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games

当我使用带有 ssh URL 的 GIT 或 Mercurial 时,也会发生同样的情况。它在服务器上找不到 hg 或 git 可执行文件,因为它没有从 /etc/profile 获取 PATH。

所以问题是:是否有一种“更全局”的方式来配置 PATH,以便它也适用于 SSH 远程执行?为每个用户配置 PATH 不是一种选择。在客户端上使用 git/hg 时指定 git/hg 可执行文件的完整路径也不是一种选择。而且我知道我可以在 /usr/local/bin 中使用符号链接或包装脚本来使其正常工作,但我正在明确搜索通过 SSH 远程执行命令时是否有正确 PATH 的可能性。

【问题讨论】:

  • 我会使用 /usr/local/bin 中的符号链接作为解决方法。它确实相对干净,而且避免只为一两个可执行文件(例如 /opt/mercurial/bin)修改 PATH。
  • 对于 Mercurial,您可以在 .hg/hgrc 文件或一些更全局的配置文件中将 ui.remotecmd 设置为 /opt/mercurial/bin/hg。这将使 Mercurial 将该命令用作远程 hg 命令。

标签: linux git mercurial ssh


【解决方案1】:

在 Debian 上,标准环境是通过pam_env(在/etc/pam.d/sshd)设置的,它将读取/etc/environment/etc/security/pam_env.conf。您可以编辑它们,或者在 pam 配置中添加另一个 pam_env 行,指向特定于 SSH 登录的环境文件。

【讨论】:

    【解决方案2】:

    虽然不是您的问题的答案,但来自this link,看起来 ssh 有自己的路径设置。

    【讨论】:

    • 我猜这个信息已经过时了(13岁)。我没有重复的 /usr/bin 并且在 SSH 默认路径中有 /usr/bin/X11。但无论如何,我在 sshd 手册页中找不到关于路径的任何提示。所以也许它真的是一个“固定”(硬编码)路径,就像这个旧方法中提到的那样。或者,这条路径可能是从其他地方读取的。我 grepped 了整个 /etc 目录,但除了 /etc/profile 什么都找不到。
    【解决方案3】:

    ssh 服务器set 会话开始时的一些环境变量。您可以在 ssh 服务器上创建一个~/.ssh/environment 文件来设置附加变量(假设服务器上有一个 BSD openssh 服务器),但必须将服务器配置为允许更改环境。

    如果以上都不起作用,可以设置远程命令。在 mercurial 中,这是用于推拉的 --remotecmd 开关。

    【讨论】:

      【解决方案4】:

      我通过将所有必要的文件包含到 .bashrc 解决了这个问题

      例如:

      . /etc/profile.d/rvm.sh
      . /etc/profile.d/bash_completion.sh 
      

      【讨论】:

        猜你喜欢
        • 2021-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-23
        • 2016-12-16
        • 2011-05-27
        • 2018-04-21
        • 2018-03-03
        相关资源
        最近更新 更多