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

发布于 2024-09-29 18:28:13 字数 410 浏览 3 评论 0原文

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

  • 包含 Visual Studio 路径的正确路径。
  • VS80COMNTOOLS
  • TEMP
  • TMP
  • PROCESSOR_ARCHITECTURE
  • PROCESSOR_IDENTIFIER
  • PROCESSOR_LEVEL
  • PROCESSOR_REVISION
  • FP_NO_HOST_CHECK
  • PSMODULEPATH

这会影响尝试通过 ssh 编译源代码(例如 ruby​​)。使用 rdesktop 时存在这些变量。

使用 ssh 时如何让这些变量存在于 Cygwin 中?

A bunch of system variables are missing in Cygwin when using ssh. Some that I noticed include:

  • A proper PATH including the Visual Studio paths.
  • VS80COMNTOOLS
  • TEMP
  • TMP
  • PROCESSOR_ARCHITECTURE
  • PROCESSOR_IDENTIFIER
  • PROCESSOR_LEVEL
  • PROCESSOR_REVISION
  • FP_NO_HOST_CHECK
  • PSMODULEPATH

This impacts trying to compile source, such as ruby, via ssh. These variables exist when using rdesktop.

How do I get these variables to exist in Cygwin when using ssh?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

李白 2024-10-06 18:28:13

我找到了一篇描述如何解决此问题的帖子:http://smithii.com/node/44

这里是该页面中的“o bash”位:

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,因此仅完成一次。否则速度就慢得令人痛苦。

I found a post describing how to work around this: http://smithii.com/node/44

Here is the bit 'o bash from that page:

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

edited: Moved the tr so it is only done once. It was painfully slow otherwise.

葬﹪忆之殇 2024-10-06 18:28:13

查看此处的第 1 个答案,>=BASH-4.4 将引发有关以下内容的警告:

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

要解决此问题,只需将“测试”行从:更改

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

Looking at the 1 answer here, >=BASH-4.4 will throw warnings about:

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

To fix this, simply change the 'test' line from:

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

to:

test -z "${!__var}" && export $__var="`cat $__var | tr -d '\0'`" >/dev/null 2>&1
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文