我的问题是这样的(操作系统是Sun Solaris):
在启动时,我想使用特定脚本启动进程。我这样做是通过将此脚本放在/etc/init.d
中(并遵循其他K和S规则)。
脚本将调用的程序位于$HOME/xxx/yyy
位置。
我正在使用'su - {myuser} -c "{full path of the program}"'
来执行{myuser}脚本。
我不想在脚本中硬编码$ HOME的值,但我只想使用$HOME
环境变量。如何在shell脚本中获取此$HOME
环境变量?还有哪些其他变量可供我使用?
答案 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
。这将打印出将在子脚本中设置的环境变量。