使用init.d启动过程启动脚本时可用的环境变量是什么?

时间:2010-04-08 09:37:47

标签: unix shell process boot

我的问题是这样的(操作系统是Sun Solaris):

  1. 在启动时,我想使用特定脚本启动进程。我这样做是通过将此脚本放在/etc/init.d中(并遵循其他K和S规则)。

  2. 脚本将调用的程序位于$HOME/xxx/yyy位置。

  3. 我正在使用'su - {myuser} -c "{full path of the program}"'来执行{myuser}脚本。

  4. 我不想在脚本中硬编码$ HOME的值,但我只想使用$HOME环境变量。如何在shell脚本中获取此$HOME环境变量?还有哪些其他变量可供我使用?

3 个答案:

答案 0 :(得分:2)

刚刚放

env > env.txt
脚本中的

。运行脚本后,env.txt文件包含所有环境变量。

答案 1 :(得分:2)

要获取任何用户的home变量,请尝试此hack:

HOME=`sudo -u myuser -s "cd ~; pwd"`

答案 2 :(得分:1)

2)哪个用户的$ HOME? root的$ HOME或myuser的$ HOME

如果是myuser的主页,只需在子脚本中使用$ HOME,不要在init.d脚本中使用它。这将由您启动的shell进程为您设置。执行su - {myuser}时,您指示su运行myuser的登录shell(如/ etc / passwd中所定义)。登录shell将根据它的shell设置默认环境变量。有关详细信息,请参阅shell的文档。在Solaris上,这可能是ksh或bourne shell。

3)做su - myuser -c /usr/bin/env。这将打印出将在子脚本中设置的环境变量。