2012-02-29 150 views
2

有沒有可能以某種方式在Linux中擁有動態環境變量?Linux中的動態環境變量?

我有一個網絡服務器,其中網站採用這種佈局:

site/ 
    qa/ 
    production/ 

我想有一個環境變量(如APPLICATION_ENV)被設置爲「QA」當我在QA目錄是和當我在生產目錄中時「生產」。原因是各個站點可以使用許多不同的流程,都需要知道它是QA還是生產環境。有些網站在Apache下使用PHP,一些使用Node.js,一些網站使用命令行工具,cron作業等等。我希望獲得一個授權來源,瞭解它是質量保證還是生產環境。

+0

也許,'pwd'會怎麼做? – vines 2012-02-29 10:23:50

+0

這是一個shell腳本嗎?你可以使用'$(basename $(pwd))' – 2012-02-29 10:25:18

+0

不僅僅是shell腳本。如果只是這樣,它會很容易:-)有許多網站,有許多不同的流程,腳本等等。這就是爲什麼我想要*一個*應用程序環境的授權來源(如果可能,我寧願將其放在環境變量中,因爲所有的Linux進程都理解環境變量) – 2012-02-29 10:30:27

回答

6

基於rvm的覆蓋:

cd() { 
    if builtin cd "[email protected]" 
    then 
     if [[ "$PWD" =~ /(qa|production)(/|$) ]] 
     then 
      export APPLICATION_ENV="${BASH_REMATCH[1]}" 
     else 
      unset APPLICATION_ENV 
     fi 
     return 0 
    else 
     return $? 
    fi 
} 

只是把這個功能在.bashrc或一些其它來源的環境文件,並嘗試cdqaproduction,或它們的一個子目錄中。

+0

哦,很好的技巧。謝謝! – 2012-02-29 13:58:04

1

您可以在/bin/usr/bin目錄之一中創建一個可執行腳本,並從站點腳本執行它。我不明白你爲什麼需要破解cd

在/ usr/bin中/其版本:

#!/bin/bash 
if [[ "$PWD" =~ /(qa|production)(/|$) ]] 
then 
    echo "${BASH_REMATCH[1]}" 
else 
    echo "unknown" 
fi 

網址:

$env = system("which-version")

+0

謝謝,這聽起來很有用。我會試一試。 – 2012-02-29 13:57:08