Вопрос или проблема
У меня установлен командный модуль (lmod) на моих серверах Ubuntu Linux. Это хорошо работает для пользователей, которые подключаются по ssh к серверу (‘module avail’ показывает доступные модули). Некоторые пользователи хотят подключаться с помощью xrdp или x2go, и когда они открывают терминальное окно в таком типе сессии, команды ‘module’ не работают.
Я могу решить эту проблему по мере необходимости, попросив их изменить настройки в приложении терминала и установить ‘Запускать команду как оболочку входа’. Новые сеансы терминала после этого будут правильно настроены для окружения ‘module’.
Как я могу настроить это на уровне системы, чтобы все пользователи получали поведение ‘оболочки входа’? Или как я могу настроить это так, чтобы настройка lmod выполнялась независимо от того, является ли это оболочкой входа?
Ответ или решение
Для того чтобы система команд ‘module’ (lmod) работала корректно для всех пользователей, подключающихся к вашим серверам Ubuntu через xrdp или x2go, существует несколько подходов, которые требуют настройки окружения оболочки. Ниже приведен один из наиболее эффективных вариантов, который обеспечит системное решение для всех пользователей.
Шаг 1: Обновление файла .bashrc
Обычно, когда вы запускаете терминал в сеансе рабочего стола (например, xrdp или x2go), он не рассматривается как интерактивная оболочка входа. Для исправления этого поведения можно добавить команды инициализации модуля в файл .bashrc
, который обрабатывается для любой интерактивной не-login оболочки.
-
Откройте терминал и выполните команду для редактирования файла
.bashrc
:nano /etc/bash.bashrc
Обратите внимание, что мы редактируем системный файл, что будет применимо ко всем пользователям.
-
В конце файла добавьте следующие строки:
# Initialize lmod for all users if [ -f /usr/share/lmod/lmod/init/profile ] ; then source /usr/share/lmod/lmod/init/profile fi
Это гарантирует, что lmod будет инициализирован для любой оболочки, включая оболочку терминала в графических сеансах.
-
Сохраните изменения и закройте редактор.
Шаг 2: Перезагрузка сеанса
После внесения изменений в файл bash.bashrc
, рекомендуется перезапустить все активные сеансы или, по крайней мере, перезапустить терминальные приложения, чтобы они начали использовать новый файл конфигурации.
Шаг 3: Проверка
Чтобы убедиться, что изменения работают, откройте новое окно терминала при подключении через xrdp или x2go и выполните команду:
module avail
Вы должны увидеть корректный список доступных модулей, что подтверждает успешную инициализацию.
Альтернативный вариант: Использование .profile
Если вы хотите, чтобы инициализация lmod проходила независимо от типа оболочки, вы также можете добавить вызов lmod в глобальный файл .profile
:
-
Откройте файл
/etc/profile
:nano /etc/profile
-
В конце файла добавьте аналогичный код для инициализации lmod:
# Initialize lmod for login shells if [ -f /usr/share/lmod/lmod/init/profile ] ; then source /usr/share/lmod/lmod/init/profile fi
Заключение
Исследуя вышеуказанные подходы, вы сможете обеспечить автоматическую инициализацию системы команд ‘module’ для всех пользователей в seansах через xrdp и x2go, без необходимости настройки каждого пользователя индивидуально. Внедрение этих изменений не только упростит работу конечных пользователей, но и повысит общую эффективность использования вашего Linux-сервера.
Помните, что после внесения изменений всегда полезно протестировать их на нескольких учетных записях, чтобы удостовериться, что всё работает корректно.