ve vašem bashrc nastavte toto:
PROMPT_COMMAND='[[ $PWD == "/foo/bar/" ]] && export FOO=BAR || unset FOO'
Obsah proměnné PROMPT_COMMAND bude proveden pokaždé, když bude váš prompt přepsán (těsně před tím, než je skutečně zapsán) výše uvedený příkaz kontroluje proměnnou $PWD (která obsahuje aktuální pracovní adresář vašeho shellu) proti "/foo/bar", pokud je odpovídá, exportuje vaši proměnnou, pokud tomu tak není, pak je proměnná nenastavená.
EG
[email protected]$ PROMPT_COMMAND='[[ $PWD == "/home/peteches/test" ]] && export FOO=BAR || unset FOO'
[email protected]$ pwd
/home/peteches
[email protected]$ cd test
[email protected]$ pwd
/home/peteches/test
[email protected]$ env | grep FOO
6:FOO=BAR
73:PROMPT_COMMAND=[[ $PWD == "/home/peteches/test" ]] && export FOO=BAR || unset FOO
[email protected]$ cd ../
[email protected]$ pwd
/home/peteches
[email protected]$ env | grep FOO
72:PROMPT_COMMAND=[[ $PWD == "/home/peteches/test" ]] && export FOO=BAR || unset FOO
[email protected]$
Pokud vám nevadí použít náhradní řešení, přidejte toto do .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
Pokaždé, když se přesunete do určité složky, nastaví se tím vaše proměnná env nebo cokoli chcete
Nejprve AFAIK, bash
nebude hledat .bashrc
soubor v libovolném jiném adresáři než ve vašem domovském adresáři – alespoň ne ve výchozím nastavení.
Za druhé, po zapsání nových položek do vašeho .bashrc
, měli byste source .bashrc
souboru, aby došlo k úpravám.