dans votre bashrc, définissez ceci :
PROMPT_COMMAND='[[ $PWD == "/foo/bar/" ]] && export FOO=BAR || unset FOO'
Le contenu de la variable PROMPT_COMMAND sera exécuté chaque fois que votre invite est réécrite (juste avant qu'elle ne soit écrite en fait) la commande ci-dessus vérifie la variable $PWD (qui contient le répertoire de travail actuel de votre shell) par rapport à "/foo/bar" si elle correspond exporte votre variable si ce n'est pas le cas, la variable n'est pas définie.
EX
[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]$
Si cela ne vous dérange pas d'utiliser une solution de contournement, ajoutez-la à votre .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
Chaque fois que vous vous déplacez vers un certain dossier, cela définira votre variable d'environnement ou ce que vous voulez
Tout d'abord, autant que je sache, bash
ne recherchera pas un .bashrc
file dans n'importe quel autre répertoire que votre home -- du moins, pas par défaut.
Deuxièmement, après avoir écrit de nouvelles entrées dans votre .bashrc
, vous devriez source .bashrc
le fichier, afin que les modifications aient lieu.