Назад | Перейти на главную страницу

Установка переменных среды для оболочек входа в систему под учетной записью root в FreeBSD

В настоящее время я настраиваю Планировщик открытой сетки во FreeBSD. В рамках этого процесса мне нужно установить переменную средыSGE_ROOTкак корень.

Для этого я экспериментировал, пытаясь установить это значение через корневую учетную запись ~/.profile поскольку эта учетная запись настроена на использование оболочки Bourne в качестве оболочки по умолчанию. Я экспортировал SGE_ROOT следующим образом: export SGE_ROOT="/usr/local/sge"

Однако после входа в корневую оболочку с помощью SGE_ROOT настроен в нем ~/.profile Казалось бы, этот метод установки переменной окружения не работает после запуска команды env возвращает следующее:

SUDO_COMMAND=/usr/bin/su
LOGNAME=root
MAIL=/var/mail/root
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/home/ec2-user/bin:/usr/local/sge/bin/fbsd-amd64
SUDO_GID=1001
PWD=/usr/home/ec2-user
TERM=xterm
HOME=/root
USER=root
SHELL=/bin/sh
SUDO_USER=ec2-user
SUDO_UID=1001
USERNAME=root

Однако я заметил, что PATH переменная, которую я также настроил через root ~/.profile включение двоичных файлов Open Grid Scheduler, похоже, было успешно установлено.

Я также обнаружил, что выполнение той же конфигурации в учетных записях без полномочий root на одном компьютере позволяет установить переменную окружения. Кроме того, экспорт значения в глобальный /etc/profile похоже, производит такое же поведение.

Поэтому мне интересно, есть ли лучший способ установить эту переменную для учетной записи root в оболочке Bourne?

Я понимаю, что, вероятно, было бы проще использовать tcsh в качестве оболочки по умолчанию root, поскольку FreeBSD обычно настраивается именно так. Однако мне до сих пор пришлось скомпилировать Open Grid Scheduler без поддержки tcsh из-за проблем с utmp.h больше не доступен во FreeBSD.

Я заметил, что у вас есть переменные среды SUDO, поэтому я предполагаю, что вы запускаете это с помощью sudo. Для проверки я установил оболочку корневого пользователя в / bin / sh и добавил

SGE_ROOT = "/ usr / local / sge"

экспорт SGE_ROOT

в мой /root/.profile

И я не вижу переменную среды, если я просто запускаю «sudo sh», но она у меня есть, если я запускаю «sudo -i» или «sudo su -», так что похоже, что проблема больше связана со способом sudo используется вместо оболочки.