Если вы добавите переключатель «-», он загрузит профиль myuser. Другими словами, вы можете загружать переменные среды профиля без заголовка.
su - myuser -c "cmd_to_execute"
У меня есть сервер, на котором работает Fedora 19. Когда сервер загружается, мне нужно выполнить несколько команд. Я делаю это в /etc/rc.d/rc.local
файле. Это хорошо работает. Теперь мне нужно запустить мой nodejs
сервер из этого скрипта.
Я не хочу запускать серверную программу как root
. Поэтому я попытался что-то вроде следующего в rc.local
файле.
su myuser -c /home/myuser/project/path/prod_start.sh
Это выполняется prod_start.sh
как myuser
. Но prod_start.sh
я меняю каталог на корневой каталог приложений. Также ожидается, что некоторые переменные среды будут установлены перед запуском. Но поскольку эти переменные среды определены bash_profile
для пользователя myuser
, ни одна из них не вступила в силу, и сценарий завершился ошибкой.
Мне интересно, как я могу запустить команду от имени другого пользователя со всеми необходимыми для него переменными среды? Должен ли я установить все эти переменные среды на системном уровне, чтобы они были доступны всем пользователям?
Если вы добавите переключатель «-», он загрузит профиль myuser. Другими словами, вы можете загружать переменные среды профиля без заголовка.
su - myuser -c "cmd_to_execute"