Я пытаюсь загрузить модули среды из неинтерактивного удаленного сеанса и соответственно установить переменные среды.

Например, в моем bashrc я обычно называю

module load /path/to/cmake/3.x.x

и когда я запускаю "cmake --version" из оболочки входа в систему, я увижу

cmake v3.x.x

Однако, когда я запускаю это с неинтерактивным удаленным сеансом, я вижу cmake v2.xxx по умолчанию.

ssh me@machine 'cmake --version'

Чтобы обойти это, я попытался обновить мой /etc /ssh /sshd_config до "PermitUserEnvironment yes"

Внутри моего файла ~/.ssh/environment я могу соответственно установить переменные окружения и обновить свой $ PATH. Это работает, и при выполнении команд удаленно через SSH я могу видеть мой путь обновляется. т.е.

ssh me@machine 'echo $PATH'

Я также создал файл ~/.ssh/rc, который, как я могу подтвердить, ДОЛЖЕН вызываться. Однако, несмотря на то, что я поставил тот же «модуль загрузки /path/to/cmake/3.xx», я все еще вижу, что он загружает v2. То же самое происходит, если я обновляю и экспортирую свой PATH внутри моего .ssh/rc. Он обновляется, но, похоже, применяет его к другой оболочке, нежели та, которая используется удаленно.

Я не понимаю, почему ~/.ssh/environment изменяет вещи для текущей оболочки, но ~/.ssh/rc изменяет вещи для, по-видимому, другой оболочки.

Любые идеи о том, как я могу использовать модули среды удаленно?

Спасибо

1 ответ1

0

По моему опыту, конечно, с RHEL и Fedora, ~/.bashrc работает в неинтерактивном SSH-соединении, на которое вы ссылаетесь. Я также использую систему модулей (на RHEL), и у меня нет проблем с загрузкой модулей из моего ~/.bashrc, когда я выполняю команду через SSH.

Согласно следующему вопросу / ответам с сайта UNIX / Linux StackExchange, некоторые дистрибутивы содержат код в своем файле по умолчанию .bashrc (из / etc / skel), который нужно прервать, если он не интерактивен - может быть, у вас что-то подобное находится рядом с верх твоего? Там также есть обсуждение, которое, кажется, подтверждает, что bash при запуске из SSHD будет запускать ~ / .bashrc.

https://unix.stackexchange.com/questions/257571/why-does-bashrc-check-whether-the-current-shell-is-interactive

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .