【问题标题】:Cygwin inherits environment variables from Windows sometimesCygwin 有时会从 Windows 继承环境变量
【发布时间】:2015-02-10 01:06:00
【问题描述】:

如果我在 Windows 中设置环境变量 CVSROOT 并给它一个类似 cvsserver:/home/cvs 的值,如果那么

1) 打开 Windows CMD shell 并执行“echo %CVSROOT%”,我得到“cvsserver:home/cvs”

2) 打开 Cygwin bash shell 并执行“echo $CVSROOT”,我得到“cvsserver:home/cvs”

3) 从 Linux,ssh 到机器并执行“echo $CVSROOT”,我什么也没得到。

如果我希望 ssh 会话具有 CVSROOT 的值,我需要将其插入到 .bashrc 中。

有什么办法可以让 ssh 会话也从 Windows 继承环境变量?

编辑:

4) 来自 Linux,做

ssh machine "printenv CVSROOT"

在 .bashrc 中设置了环境变量,我什么也得不到。在交互式提示下,我得到了变量值,但这种方式没有给出任何结果。

【问题讨论】:

    标签: windows ssh cygwin environment-variables


    【解决方案1】:

    我在这里找到了一个不错的解决方案:http://www.smithii.com/node/44

    它在注册表中查找系统变量,并在通过 ssh 打开的会话中设置变量。

    然后,从您的 ssh 客户端调用一小段脚本(同时连接到您的 cygwin 服务器),如下所示: ssh $WINDOWSUSER@$WINDOWSBUILDSERVER "source /etc/profile ; echo $CVSROOT "

    【讨论】:

    • /etc/profile 应该是自动获取的。今天更倾向于不更改它,而是使用提供的脚本创建新文件并将其放入 /etc/profile.d
    【解决方案2】:

    好的,我想通了……

    无论出于何种原因,bash shell 都没有继承系统上设置的 CVSROOT 变量。我需要把这条线

    export CVSROOT=cvsserver:/home/cvs
    

    进入 .bashrc 和 .bash_profile 文件。

    .bashrc 文件中需要该行,以便非交互式登录将获得 CVSROOT 变量。例如:

    ssh machine "printenv CVSROOT"
    

    在 .bashrc 文件中需要这一行,以便 CVSROOT 存在。

    .bash_profile 文件中需要该行,以便交互式登录将获得 CVSROOT 变量。例如:

    ssh machine
    printenv CVSROOT
    

    【讨论】:

      【解决方案3】:

      如果您的 SSH 服务在 Windows 机器上运行(我假设您这样做)并且它是通过 Cygwin 运行的。

      服务似乎在启动时拍摄了环境变量的快照,但没有刷新它们。

      重启服务应该就够了。

      【讨论】:

        【解决方案4】:

        一件事是 Windows->Cygwin 另一件事是 ssh

        您是否尝试过将您的 Windows 变量明确转发到您的 linux:

        ssh -t user@host "export CVSROOT=%CVSROOT%;/bin/bash --login"
        

        【讨论】:

          【解决方案5】:

          重新启动计算机将解决此问题。环境变量更改不仅仅会传播到所有正在运行的程序。

          【讨论】:

            【解决方案6】:

            我遇到了同样的问题。通过像这样设置变量得到这个工作:

            ssh machine "export MYVARIABLE=1 && printenv MYVARIABLE"
            

            【讨论】:

              猜你喜欢
              • 2023-04-04
              • 1970-01-01
              • 1970-01-01
              • 2012-12-18
              • 1970-01-01
              • 2012-07-07
              • 1970-01-01
              • 2021-03-23
              • 2011-03-07
              相关资源
              最近更新 更多