Environment-Variables
為什麼環境變數持久性會破壞 PATH 變數?
我嘗試在 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
/etc/environment
是 的配置文件pam_env
,而不是 shell 讀取的文件。語法有些相似,但又不一樣。特別是,您不能引用現有變數:您已將搜尋路徑設置為包含$ORACLE_HOME/bin
and$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
請注意,您可以引用其他變數,但不能引用變數的先前值。
如果您想要更靈活的方法,請
/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