6

これは.bashrcの質問です。"export FOO=bar"のような特定のディレクトリで.bashrcを設定したいと思い.rvmrcます。

以下を試してみました。

$ touch ~/foo/.bashrc
$ echo 'export RAILS_ENV=development' >> ~/foo/.bashrc
$ cd foo/
$ env|grep RAILS_ENV

ただしRAILS_ENV、この場合は何も設定しないものとします。

.bashrcの代わりに設定する.rvmrcと合格です!しかし、.bashrcrvm環境をインストールする必要がないので、に設定する方が良い方法です。

解決策はありますか?

4

4 に答える 4

13

あなたのbashrcでこれを設定してください:

PROMPT_COMMAND='[[ $PWD == "/foo/bar/" ]] && export FOO=BAR || unset FOO'

PROMPT_COMMAND 変数の内容は、プロンプトが書き換えられるたびに (実際に書き込まれる直前に) 実行されます一致しない場合は変数をエクスポートし、変数は設定解除されます。

例えば

peteches@yog-sothoth$ PROMPT_COMMAND='[[ $PWD == "/home/peteches/test" ]] && export FOO=BAR || unset FOO'
peteches@yog-sothoth$ pwd
/home/peteches
peteches@yog-sothoth$ cd test
peteches@yog-sothoth$ pwd
/home/peteches/test
peteches@yog-sothoth$ env | grep FOO
6:FOO=BAR
73:PROMPT_COMMAND=[[ $PWD == "/home/peteches/test" ]] && export FOO=BAR || unset FOO
peteches@yog-sothoth$ cd ../
peteches@yog-sothoth$ pwd
/home/peteches
peteches@yog-sothoth$ env | grep FOO
72:PROMPT_COMMAND=[[ $PWD == "/home/peteches/test" ]] && export FOO=BAR || unset FOO
peteches@yog-sothoth$ 
于 2013-01-22T16:15:02.500 に答える
6

回避策を使用しても構わない場合は、これを.bash_profile

mycd()
{
    cd $1
    if [ "$(pwd)" == "/your/folder/that/needs/env" ]; then
        export RAILS_ENV=development
    else
        export RAILS_ENV=
    fi;
}
alias cd=mycd

特定のフォルダーに移動するたびに、これにより環境変数または必要なものが設定されます

于 2013-01-22T16:15:33.770 に答える
4

まず、私の知る限り、ホーム以外のディレクトリでファイルをbash検索することはありませ.bashrcん。少なくとも、デフォルトではそうではありません。

第 2 に、新しいエントリを に書き込んだ後、変更が行われるようにファイルを変更する.bashrc必要があります。source .bashrc

于 2013-01-22T16:04:29.273 に答える