nel tuo bashrc imposta questo:
PROMPT_COMMAND='[[ $PWD == "/foo/bar/" ]] && export FOO=BAR || unset FOO'
Il contenuto della variabile PROMPT_COMMAND verrà eseguito ogni volta che il tuo prompt viene riscritto (appena prima che sia effettivamente scritto) il comando sopra controlla la variabile $PWD (che contiene la directory di lavoro corrente della tua shell) rispetto a "/foo/bar" se lo fa corrisponde esporta la variabile in caso contrario, la variabile non è impostata.
ES
[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]$
Se non ti dispiace usare una soluzione alternativa, aggiungila al tuo .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
Ogni volta che ti sposti in una certa cartella, questo imposterà la tua variabile env o quello che vuoi
Primo, AFAIK, bash
non cercherà un .bashrc
file in qualsiasi altra directory tranne la tua casa -- almeno, non per impostazione predefinita.
In secondo luogo, dopo aver scritto nuove voci nel tuo .bashrc
, dovresti source .bashrc
il file, in modo che le modifiche abbiano luogo.