ssh user@IP sh <команда> пропустил переменные среды

Существует sc и oleo (ни один из которых у меня есть любой опыт с). Будучи проектом GNU, однако, обработка oleo, более вероятно, будет emacsesque, чем vimmy.

5
28.04.2011, 23:52
5 ответов

У Вас не должно быть определений переменной среды в ~/.bashrc, тот файл для конфигураций для удара при выполнении в интерактивном режиме (псевдонимы, подсказки, такой материал). Место для переменных среды ~/.profile; это читается при запуске интерактивной сессии в текстовом режиме, и во многих системах также в графическом режиме. Дополнительную информацию см. в этом ответе.

Для выполнения оболочки удара, которая устанавливает переменные среды, как обычно, для удаленной машины можно сделать

ssh user@IP bash --login runme.sh

Для других оболочек заставьте их считать Ваш .profile (и возможно /etc/profile также):

ssh user@IP '. /etc/profile; . ~/.profile; exec runme.sh'

Если Вы хотите скопировать переменные среды со своей локальной сессии по ssh, это возможно, но обычно отключено на стороне сервера. Прочитайте этот ответ для получения дополнительной информации.

7
27.01.2020, 20:37

Как насчет этого:

ssh user@IP -- '. ~/.bashrc; sh runme.sh'

Необходимо, вероятно, быть немного осторожны относительно различия между sh и bash. Если у Вас есть необычные настройки в .bashrc, и sh что-то как тире, затем это могло бы перестать работать.

1
27.01.2020, 20:37
  • 1
    ssh user@IP . ~/.bashrc; sh runme.sh это могло работать, но ssh user@IP '. ~/.bashrc; sh runme.sh' все еще не может получить огибающий Вар, я смущен. Что случилось с единственной кавычкой? Ни двойные кавычки могли работать... Я нахожусь на поле человечности. –  Weiwei Yang 28.04.2011, 08:16
  • 2
    @Yang: Когда Вы выполняете ту первую команду, runme.sh выполняется на локальной машине. Ваша проблема может быть этим .bashrc выходит рано, в этом случае фиксация не должна определять переменные среды там, но в .profile. –  Gilles 'SO- stop being evil' 28.04.2011, 23:52

Как насчет того, чтобы получить /etc/profile на ssh команда?

ssh user@host "source /etc/profile; sh runme.sh"

Принятый из ответа по этому вопросу

0
27.01.2020, 20:37
  • 1
    Существуют места mutiple, мы можем установить переменные среды, если Вы устанавливаете его в/etc/profile, я уверен, что это работает. Спасибо Andy. –  Weiwei Yang 28.04.2011, 10:56
# If not running interactively, don't do anything
[ -z "$PS1" ] && return

Обычно ~/.bashrc запустится с некоторой формы предыдущего кода. При выполнении команды непосредственно с ssh удар не будет работать в интерактивном режиме, таким образом, необходимо удостовериться, что переменные среды, которые Вы хотите установить, перед любой такой строкой.

0
27.01.2020, 20:37

В целевой системе, sh на самом деле bash? Это очень хорошо не может быть, который является одной потенциальной причиной Вашего .bashrc не быть считанным автоматически.

Делает выполнение bash runme.sh работа? Если так, это - Ваша проблема.

Также как кто-то уже указал, если у Вас есть что-нибудь, что обнаруживает, работает ли Ваша оболочка в интерактивном режиме в Вашем .bashrc, Ваши переменные должны быть установлены выше этого кода.

0
27.01.2020, 20:37

Теги

Похожие вопросы