[英]Environment Variables will not set in shell script
我正在使用Centos 6.5
我注意到我們的某些軟件無法正常工作,這是由於路徑錯誤和其他環境設置不正確造成的。 我進行了一些測試,並且(我不是Linux專家)在使用export命令在提示符下設置環境變量時,它運行良好,例如
export PATH=$PATH:/opt/application
如預期的那樣,這會將默認路徑添加到新添加的內容中。
但是,當我將上述命令放入shell腳本並運行該腳本時,路徑不會更改。
我努力了:
PATH=$PATH:/opt/application
export PATH
我試過了:
PATH=${PATH}:/opt/application
export PATH
和
export PATH=$PATH:/opt/application
以及
export PATH=${PATH}:/opt/application
但是,一旦執行echo或env命令,您所獲得的只是默認的PATH設置。
我無法弄清楚提示為何起作用,但是shell腳本卻不能。 我以root身份運行。
每個程序都有自己的環境。 一個程序可以更改其環境,並且可以使這些更改傳播到它啟動的其他程序,但是任何程序都不能更改另一個正在運行的程序的環境。
外殼賦予了特殊的地位並可以訪問其環境,但是它必須遵守與任何其他程序相同的規則。 當您運行shell腳本時,這是一個具有(同樣)自己的環境的新程序。 因此,對該環境所做的更改不會反映在父Shell實例的環境中。
但是,您可以使用Shell來指示當前實例從文件讀取和處理命令,而不是在單獨的(子)shell中運行它們。 這就是您的Shell配置文件( .bashrc
等)如何有效的方式。 在bash
中,執行該操作的命令是拼寫的.
。 您可以這樣使用它:
. /opt/application/env.sh
例如,如果要在個人或全局環境設置文件中執行此操作,則明智地對其進行一些保護:
test -r /opt/application/env.sh && . /opt/application/env.sh
避免在/opt/application/env.sh
被刪除或無法訪問的情況下過早中止安裝文件的處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.