2017-02-15 21 views
0

У меня есть требование, в котором должен выполняться сценарий, который требует установки нескольких переменных среды. Обычно требуется следующее:Альтернатива экспортной переменной в неинтерактивной оболочке

1) Я могу войти в целевой узел, скажем T1, используя «user1» и установить переменную окружения, например TEMPDIR = ~/tmp; Сделайте источник ~/.bashrc и выйдите из системы.

2) Теперь мне нужно выполнить неинтерактивный запуск сценария оболочки. Это Войти на сервер администратора и выполните команду: SSH user1 @ T1 «Суд -u user2/путь/filescript»

файл сценарий, который я исполняю требует TEMPDIR быть установлено.

Вышеуказанная настройка не работает, так как оболочка bash не используется во время неинтерактивной оболочки (если мое понимание верное). Чтобы преодолеть это, я попытался следующие предложения на данном сайте и другом, но без удачи:

SSH user1 @ T1 «источник ~/.bashrc, Суд -u user2/путь/filescript»

ssh user1 @ T1 "sudo -u user2 env -i/path/filescript"

Пожалуйста, помогите. Благодарю.

Примечание:. Я пытаюсь получить это сделано без какого-либо вмешательства со стороны корня (я имею в виду, используя корень, чтобы установить/неустановленные переменные

ответ

0

Я не уверен, шаг 1 необходимо каким-либо образом:

+0

Спасибо. Я пробовал это. Но это не работает. Не уверен, что это потому, что вторая команда выполняется как sudo и поэтому не знает, что было установлено? –

+0

А, я забыл 'sudo' is ограничивая унаследованную среду по соображениям безопасности. Ваша вторая попытка была ближе. – chepner

+0

Мог получить эту работу, указав sudo -E (чтобы сохранить оригинальные настройки). Благодарю. –