Какие переменные среды доступны при запуске скрипта с использованием процесса загрузки init.d? - PullRequest
1 голос
/ 08 апреля 2010

Моя проблема такая (ОС Sun Solaris ):

  1. Во время загрузки я хочу запустить процесс, используя определенный скрипт. Я делаю это, помещая этот скрипт в /etc/init.d (и следуя другим правилам K и S).

  2. Программа, которая будет вызываться скриптом, расположена в $HOME/xxx/yyy location.

  3. Я использую 'su - {myuser} -c "{full path of the program}"', чтобы выполнить скрипт как {myuser}.

  4. Я не хочу жестко кодировать значение $ HOME в скрипте, но я хочу использовать только переменную окружения $HOME. Как я могу получить эту переменную окружения $HOME в сценарии оболочки? И какие еще переменные будут мне доступны?

Ответы [ 3 ]

2 голосов
/ 09 апреля 2010

Чтобы получить переменную home любого пользователя, попробуйте этот хак:

HOME=`sudo -u myuser -s "cd ~; pwd"`
2 голосов
/ 08 апреля 2010

Просто поставь

env > env.txt

в сценарии. После запуска вашего скрипта файл env.txt содержит все переменные окружения.

1 голос
/ 15 апреля 2010

2) Какой пользователь $ HOME?root'а $ HOME или myuser $ HOME

Если это дом myuser, просто используйте $ HOME в дочернем скрипте и не используйте его в скрипте init.d.Это будет установлено для вас процессом оболочки, который вы запускаете.Когда вы делаете su - {myuser}, вы указываете su запустить оболочку входа в систему myuser (как определено в / etc / passwd).Оболочка входа в систему установит переменные среды по умолчанию в зависимости от того, какая это оболочка.Подробности смотрите в документации вашей оболочки.На Solaris это, вероятно, оболочка ksh или bourne.

3) Do su - myuser -c /usr/bin/env.Это выведет переменные окружения, которые будут установлены в дочернем скрипте.

...