2012-02-29 27 views
2

何らかの形でLinuxで動的環境変数を使用することはできますか?Linuxの動的環境変数は?

私はサイトがこのレイアウトに従うウェブサーバを持っている:私はQAディレクトリにいるとき「QA」に設定されている環境変数(例えばAPPLICATION_ENV)を持っていると思い

site/ 
    qa/ 
    production/ 

、および私がプロダクションディレクトリに入っているときに、 "プロダクション"に移動します。この理由は、さまざまなサイトが、QAまたは運用環境であるかどうかをすべて知る必要がある、多くの異なるプロセスを使用できるからです。いくつかのサイトはApacheでPHPを使用しており、Node.jsを使用するものもあれば、コマンドラインツール、cronジョブなどがあるものもあります。私はそれがQAであるか生産環境であるかについて、1つの権限のある情報源を持っていたいと思います。 rvmのオーバーライドに基づいて

+0

たぶん、 'pwd'ははしますか? – vines

+0

これはシェルスクリプト用ですか? '$(basename $(pwd)) 'を使うことができます。 –

+0

シェルスクリプトだけではありません。それだけであれば簡単です:-)多くの異なるプロセス、スクリプトなどがあるサイトが多数あります。そのため、私は*アプリケーション環境の権限のあるソースを*必要としています(すべてのLinuxプロセスが環境変数を理解しているので、可能ならば環境変数に入れたい) –

答えて

6

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またはいくつかの他のソース化環境ファイルでは、この機能を入れて、qacdproduction、またはそのサブディレクトリの一つにしてみてください。

+0

ああ、素敵なトリック。ありがとう! –

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

ありがとうございます。私はそれを試してみましょう。 –