Cygwin иногда наследует переменные окружения от Windows - PullRequest
0 голосов
/ 15 июля 2011

Если я установлю переменную окружения CVSROOT в Windows и передам ей значение, например cvsserver: / home / cvs, если тогда

1) открыть оболочку Windows CMD и выполнить «echo% CVSROOT%», я получаю «cvsserver: home / cvs»

2) открыть оболочку Cygwin bash и выполнить «echo $ CVSROOT», я получаю «cvsserver: home / cvs»

3) из Linux, ssh на машину и сделай "echo $ CVSROOT", я ничего не получаю.

Если я хочу, чтобы у сеанса ssh было значение для CVSROOT, мне нужно вставить его в .bashrc.

Можно ли что-то сделать, чтобы сессия ssh также наследовала переменную среды от Windows?

редактирование:

4) из Linux, сделайте

ssh machine "printenv CVSROOT"

с переменной окружения, установленной в .bashrc, я ничего не получаю. В интерактивном режиме я получаю значение переменной, но этот способ ничего не дает.

Ответы [ 6 ]

2 голосов
/ 08 ноября 2013

Я нашел хорошее решение здесь: http://www.smithii.com/node/44

Он ищет системную переменную в реестре и устанавливает переменные в сеансе, открываемые через ssh.

Затем вызывается небольшой фрагмент скрипта изваш ssh-клиент (при подключении к вашему серверу cygwin), например: ssh $ WINDOWSUSER @ $ WINDOWSBUILDSERVER "source / etc / profile; echo $ CVSROOT"

1 голос
/ 16 августа 2013

Если у вас служба SSH запущена на Windows Window (я полагаю, у вас), и это через Cygwin.

Служба, похоже, делает снимок переменных среды при запуске и не обновляет их.

Перезапуска службы должно быть достаточно.

1 голос
/ 18 июля 2011

ОК, я понял это ...

По какой-то причине оболочка bash не наследует переменную CVSROOT, установленную в системе.Мне нужно поместить эту строку

export CVSROOT=cvsserver:/home/cvs

в файлы .bashrc и .bash_profile.

Строка необходима в файле .bashrc, чтобы неинтерактивные логины получалиПеременная CVSROOT.Например:

ssh machine "printenv CVSROOT"

нужна эта строка в файле .bashrc, чтобы существовал CVSROOT.

Эта строка необходима в файле .bash_profile, чтобы интерактивные логины получали переменную CVSROOT.Например:

ssh machine
printenv CVSROOT
0 голосов
/ 09 февраля 2015

Я столкнулся с той же проблемой.Получил это, установив переменную следующим образом:

ssh machine "export MYVARIABLE=1 && printenv MYVARIABLE"
0 голосов
/ 04 марта 2013

Перезагрузка компьютера решит эту проблему.Изменения переменных среды распространяются не только на все работающие программы.

0 голосов
/ 13 февраля 2012

Одна вещь - Windows-> Cygwin, другая - ssh

. Вы пытались явно переслать переменную Windows в Linux:

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