我想在 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 实用程序进行设置,并以适当的方式配置适当的服务。