Как видно из заголовка, я хочу изменить переменные окружения на удаленном сервере, используя 'ssh'.
Моя первая попытка была:
$ ssh mysvr -l sikaiwei "getId=$ORANGE; echo $ORANGE; ORANGE=$((ORANGE+1)); echo $ORANGE; echo 'getId is '+$getId;"
Сначала я не определил $ ORANGE на хосте сервера, но определил $ ORANGE как "1" на клиенте, и я получил:
1
1
getId is +
Обратите внимание, что команда выбирает значение клиента $ ORANGE, и обновление (ORANGE+1
) не происходит.
Затем я удалил определение $ ORANGE на клиентском хосте и определил $ ORANGE на сервере, поместив команду в мой .bash_profile
.
Но
$ ssh mysvr -l sikaiwei "getId=$ORANGE; echo $ORANGE; ORANGE=$((ORANGE+1)); echo $ORANGE; echo 'getId is '+$getId;"
привело к
getId is +
Он не может распечатать значение $ ORANGE, которое я попытался инициализировать на хосте сервера! Тогда я попробовал это:
$ ssh mysvr -l sikaiwei ". .profile; getId=$ORANGE; echo $ORANGE; ORANGE=$((ORANGE+1)); echo $ORANGE; echo 'getId is '+$getId;" getId is +
Это все еще не работает.
Я пытался использовать '..' (одинарные кавычки) вместо ".." (двойные кавычки), как вы сказали, но ничего не печатается ...
$ ssh myth@mysvr 'echo orangeis $ORANGE'
orangeis
Я хочу напечатать
getId=1; echo 1; ORANGE=2; echo 2; …
вместо
getId=; echo ; ORANGE=1; echo ; …
Итак, как я могу использовать значение $ ORANGE с хоста сервера вместо значения клиента?
Мой сервер работает под управлением Windows, но я установил Cygwin. Моя клиентская машина работает под управлением Linux.
Редактировать: Я нашел часть проблемы: я устанавливал $ ORANGE в ~/.bash_profile
на хосте сервера, и я могу получить значение $ ORANGE, используя «echo $ ORANGE» в интерактивной оболочке (Cygwin), но это не было t влияет на строки команд ssh
.
Например, я ничего не получаю, когда мой клиентский хост использует
$ ssh sikaiwei@mysvr 'echo orange is $ORANGE'
orange is
Таким образом, я не получаю значение $ ORANGE, которое я делаю в сеансе на сервере.
. .profile
который я добавил, не помог.
Но если я
$ ssh sikaiwei@mysvr '. ~/.bash_profile;echo orange is $ORANGE'
orange is 4
Я получил значение!
О, я забыл упомянуть: я хочу, чтобы эти переменные на сервере были постоянными.
Другими словами, если я выполняю команду ssh
которая изменяет значение $ ORANGE с 4 на 42, тогда я хочу, чтобы $ ORANGE был 42, когда я выполняю другую команду ssh
.