在 Solaris 11 中启动时设置全局环境变量

在 Solaris 11 中启动时设置全局环境变量

我想在 Solaris 中创建一个文件,这样每当机器启动时我就可以导出一些“项目”。

IE

我想在机器启动时导出 ORACLE_HOME 和 ORACLE_SID 以及我自己的其他一些目录。

这些是我需要导出的 2 个 Oracle 文件夹:

export ORACLE_HOME=/oracle/product/11.1.0/db_1/
export ORACLE_SID=orcl

这是我需要导出的另一个文件夹:

export TESTFOLDER_DIR=/test/testfolder/bin/

每次机器启动时我都必须这样做,这非常令人恼火。

我尝试过谷歌搜索,但我还没有看到任何东西(仍在搜索)。使用导出命令创建文件很容易,但将其放在机器知道在启动时使用它们的地方是问题所在。

我有办法做到吗?

答案1

如果需要为每个帐户设置这些变量,则更简单的方法是将导出语句添加到/etc/profile.该文件不是 root 的配置文件,而是使用交互式 Bourne shell 系列 shell(sh、ksh、bash...)为每个帐户提供的文件。

然后您可以在该文件的末尾添加。

export ORACLE_HOME=/oracle/product/11.1.0/db_1/
export ORACLE_SID=orcl
export TESTFOLDER_DIR=/test/testfolder/bin/

否则,只需将这三行添加到 shell 启动文件中(可能是$HOME/.profile或之一$HOME/.bash_profile)。

如果您以 root 身份登录(这不是一个好的做法),那么这将是/.profile/root/.profile

最后,如果您想要无条件设置这些变量,无论使用什么 shell,甚至对于非交互式登录内容(例如服务),并且如果您运行 Solaris 11.3 或更早版本,您都可以使用该/etc/default/init文件。请注意,export此文件中不需要内置命令,因为它不是真正的 shell 脚本,而是真正的配置文件,例如:

ORACLE_HOME=/oracle/product/11.1.0/db_1/
ORACLE_SID=orcl
TESTFOLDER_DIR=/test/testfolder/bin/

Solaris 11.4 不再使用/etc/default/init为其服务设置环境变量,而是使用svc:/system/environment:init属性:

# svccfg -s svc:/system/environment:init setprop environment/ORACLE_HOME = astring: /oracle/product/11.1.0/db_1/
# svccfg -s svc:/system/environment:init setprop environment/ORACLE_SID = astring: orcl
# svccfg -s svc:/system/environment:init setprop environment/TESTFOLDER_DIR  = astring: /test/testfolder/bin/
# svcadm refresh svc:/system/environment

答案2

在Solaris 11中/etc/default/init包含以下语句:

# READERS OF THIS FILE: This file is Obsolete.  Migrate to reading properties from svc:/system/environment:init.

因此,系统范围的环境变量可以而且应该使用 SMF 实用程序进行设置,并以适当的方式配置适当的服务。

相关内容