1

我的问题是这样的(操作系统是 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环境变量。如何$HOME在 shell 脚本中获取此环境变量?还有哪些其他变量可供我使用?

4

3 回答 3

3

就放

env > env.txt

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

于 2010-04-08T09:46:39.250 回答
2

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

HOME=`sudo -u myuser -s "cd ~; pwd"`
于 2010-04-08T21:23:20.263 回答
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。这将打印出将在子脚本中设置的环境变量。

于 2010-04-15T04:46:11.843 回答