Cygwin, через SSH, отсутствует системная переменная - PullRequest
1 голос
/ 01 ноября 2010

В Cygwin отсутствует куча системных переменных при использовании ssh.Вот что я заметил:

  • Правильный путь, включая пути Visual Studio.
  • VS80COMNTOOLS
  • TEMP
  • TMP
  • PROCESSOR_ARCHITECTURE
  • PROCESSOR_IDENTIFIER
  • PROCESSOR_LEVEL
  • PROCESSOR_REVISION
  • FP_NO_HOST_CHECK
  • 1023
1022скомпилировать исходный код, такой как ruby, через ssh.Эти переменные существуют при использовании rdesktop.

Как заставить эти переменные существовать в Cygwin при использовании ssh?

Ответы [ 2 ]

2 голосов
/ 01 ноября 2010

Я нашел пост, описывающий, как обойти это: 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, поэтому это делается только один раз В противном случае это было мучительно медленно.

0 голосов
/ 25 мая 2017

Глядя на ответ 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...