2015-04-23 2 views

ответ

0

SSH не распространяется на все ваши переменные окружения. Вы устанавливаете только среду локального клиента ssh, а не на стороне сервера. Как взломать, просто вставьте его в команды, которые ssh работает удаленно, вместо настройки среды предварительного командования.

host_list="[email protected]" ssh -f "$host_list" 'Directory="/home/program/"; cd "$Directory" && nohup ...' 

Вот простейшая версия команды, которая позволит вам протестировать ее, в зависимости от конкретной настройки программы.

ssh localhost Dir="/etc"; echo Dir is "$Dir"; cd "$Dir" && pwd && ps 
+0

Я пробовал то, что вы предлагаете. Но это показывает «Direcotory =»/home/program: Command не найден. Каталог: Неопределенная переменная «.» –

+0

Похоже, может быть, опечатка: 'Direcotory' ошибочно написана в вашем сообщении об ошибке. А может, цитата отсутствует? –

+0

Прошу прощения за то, что я положил '' '. Истинным результатом является' Directory =/home/program: Command not found. Directory: Undefined variable'. –

0

Я не уверен, но, возможно, вы можете попробовать те:

  1. В Баше одинарных кавычек '' не repace переменных Manual
  2. Попробуйте использовать ${Directory} или изменить имя переменной (может быть, это зарезервирован)
+0

Я попытался изменить имя адреса, но он все еще не работает. Для 1, что вы предлагаете мне сделать? Я должен использовать '' '' –

+0

Почему вы не должны использовать' '' '? пытались ли вы использовать двойные кавычки и вставлять разумные части в одинарные кавычки или избегать их? – UberKaeL

+0

# 1 должен работать: переключаясь на двойные кавычки '' '', переменная '$ Directory' в удаленной команде будет заменена локальным путем перед отправкой на сервер, поэтому не имеет значения, будет ли' $ Directory 'не устанавливается на стороне сервера, пока сама программа не зависит от него. –

Смежные вопросы