Ski*_*kip 4 environment-variables
我尝试在 RedHat 中使用/etc/environment
.
它清除了我的PATH
变量;之后没有识别出任何命令。
为什么会发生这种情况,因为只需在 shell 中执行相同的命令就可以正常工作?!
我的内容/etc/environment
:
ORACLE_HOME=/usr/lib/oracle/12.1/client64
PATH=$ORACLE_HOME/bin:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
Run Code Online (Sandbox Code Playgroud)
/etc/environment
是 的配置文件pam_env
,而不是 shell 读取的文件。语法有些相似,但又不尽相同。特别是,您不能引用现有变量:您已将搜索路径设置为包含$ORACLE_HOME/bin
和$PATH
,即名称中带有美元符号的目录。
要为所有用户设置变量,您可以编辑/etc/security/pam_env.conf
,它具有不同的、更丰富的语法,但仍然不如您在 shell 中可以做的那么丰富。
ORACLE_HOME DEFAULT=/usr/lib/oracle/12.1/client64
PATH OVERRIDE=/usr/local/bin:/usr/bin:/bin:${ORACLE_HOME}/bin
LD_LIBRARY_PATH DEFAULT=$ORACLE_HOME/lib
Run Code Online (Sandbox Code Playgroud)
请注意,您可以引用其他变量,但不能引用变量的先前值。
如果您想要更灵活的方法,请/etc/profile
改为添加变量定义。在那里你可以使用所有的 shell 结构。缺点是这只能在登录会话中读取,而不是由 cron 读取。但是,您可以通过. /etc/profile;
在 cron 作业的开头添加来轻松地从它们中受益。
export ORACLE_HOME=/usr/lib/oracle/12.1/client64
PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
Run Code Online (Sandbox Code Playgroud)