2012-02-26 6 views
3

カレントディレクトリに応じてPATH変数を変更したい。ディレクトリ固有のPATH変数

プロジェクトでは、スクリプトのフルパスを指定せずに実行したいスクリプトのセットを使用しています。通常は、PATH変数に "Scripts"ディレクトリを追加することでこれを行います。

私の他のプロジェクトでは、これらのスクリプトをPATHに入れたくありません。現在のディレクトリに基づいてPATH変数を変更する方法はありますか?もしそうなら、私はどのように勉強するのがうれしいです。

+1

direnv.netをチェックしてください – rlduffy

+0

ありがとう、それは私が探していたものでした。答えとして再び投稿し、私はそれを受け入れます。 – Moe

答えて

3

direnv.org

から「direnvプロジェクトは、あなたのシェルでパス依存の環境変数を許可することを目指しています。それは私の〜/を乱雑にしないように、それは、プロジェクト固有の設定を持っている多くの用途がありますが、私のもの。私はルビーバージョンを指定するために、AWSまたはSSHキーを設定するために使用しています... "

+0

あなたはhttp://direnv.netを意味しましたか? –

+0

@Amiel - 移動したのかどうかわかりません。今、それはあなたのページのリンクのgithubに住んでいます。 – rlduffy

+0

ええ、よくdirenv.netを提案してくれてありがとうGoogle。 –

2

私は、プロジェクトに依存する設定を処理する通常の方法は、すべてのプロジェクト用の設定スクリプトを用意し、そのプロジェクトで作業するときにソースを与えることです。さらに、使用される構成スクリプトは、プロンプトを変更して、特定のシェルの現在のプロジェクトが何であるかを認識できるようにすることができます。

0

コンソールから操作するときは、ユーザーの便宜のためにのみ動作するように変更のパスが必要な場合は、cdをオーバーライドすることができますが:あなたは、シェルのcdコマンドを使用してディレクトリを変更した場合

function cd() { 
    builtin cd "[email protected]" 
    case $(pwd) in 
     */project1*) export PATH=somepath1;; 
     */project2*) export PATH=somepath2;; 
     ... 
    esac 
} 
export -f cd 

これはもちろんのみ動作し、たとえば、アプリケーションがC APIを使用してアプリケーションを変更した場合は無効になります。このコードはPATHの値をいくつかリストし、PATHを元の値にリセットしたいと思う「標準」ディレクトリ(プロジェクトの外部のもの)を適切に処理しなければならないので、ややこしいことです。また、ユーザーやスクリプトとのやりとりにPATH値を手動で変更することもできます。設定する値にはこれらの値を含める必要がありますが、cdを無効にする前に、ORIG_PATHなどの一時変数にPATHを格納する必要があります。

ポイントは:あなたが求めるものは上記のとおりですが、混乱の原因となる可能性があります。 jcolladoが標準で提案したプロジェクトと、もっとクリーンなソリューションとの間で切り替えるときに提供されるConfigスクリプト。

関連する問題