代码之家  ›  专栏  ›  技术社区  ›  docwhat

Cygwin,通过SSH,缺少一个系统变量

  •  1
  • docwhat  · 技术社区  · 14 年前

    使用ssh时,Cygwin中缺少一组系统变量。我注意到的一些包括:

    • 包括Visual Studio路径的正确路径。
    • VS80通信工具
    • TMP公司
    • 处理器架构
    • 处理器标识符
    • 处理器版本
    • 无主机检查

    这会影响通过ssh编译源代码(如ruby)的尝试。当使用桌面时,存在这些变量。

    在使用Ssh时,如何在CygWin中存在这些变量?

    2 回复  |  直到 14 年前
        1
  •  2
  •   docwhat    13 年前

    我发现一篇文章描述了如何解决这个问题: http://smithii.com/node/44

    下面是那一页的点评:

    if [ "$SSH_TTY" ]; then
    pushd . >/dev/null
    for __dir in \
    /proc/registry/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session\ Manager/Environment \
    /proc/registry/HKEY_CURRENT_USER/Environment
    do
        cd "$__dir"
        for __var in $(ls -1 | tr '[a-z]' '[A-Z]')
        do
            test -z "${!__var}" && export $__var="`cat $__var`" >/dev/null 2>&1
        done
    done
    unset __dir
    unset __var
    popd >/dev/null
    fi
    

    编辑 tr 所以只做一次。否则速度会很慢。

        2
  •  0
  •   Nathan Zachary    7 年前

    看看这里的1个答案,>=BASH-4.4将发出有关以下内容的警告:

    /etc/profile: warning: command substitution: ignored null byte in input
    

    要解决此问题,只需将“test”行从以下位置更改:

    test -z "${!__var}" && export $__var="`cat $__var`" >/dev/null 2>&1
    

    致:

    test -z "${!__var}" && export $__var="`cat $__var | tr -d '\0'`" >/dev/null 2>&1