У меня есть требование, в котором должен выполняться сценарий, который требует установки нескольких переменных среды. Обычно требуется следующее:Альтернатива экспортной переменной в неинтерактивной оболочке
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"
Пожалуйста, помогите. Благодарю.
Примечание:. Я пытаюсь получить это сделано без какого-либо вмешательства со стороны корня (я имею в виду, используя корень, чтобы установить/неустановленные переменные
Спасибо. Я пробовал это. Но это не работает. Не уверен, что это потому, что вторая команда выполняется как sudo и поэтому не знает, что было установлено? –
А, я забыл 'sudo' is ограничивая унаследованную среду по соображениям безопасности. Ваша вторая попытка была ближе. – chepner
Мог получить эту работу, указав sudo -E (чтобы сохранить оригинальные настройки). Благодарю. –