Setzen Sie in Ihrem Bashrc Folgendes:
PROMPT_COMMAND='[[ $PWD == "/foo/bar/" ]] && export FOO=BAR || unset FOO'
Der Inhalt der PROMPT_COMMAND-Variablen wird jedes Mal ausgeführt, wenn Ihre Eingabeaufforderung neu geschrieben wird (kurz bevor sie tatsächlich geschrieben wird). Der obige Befehl prüft die $PWD-Variable (die das aktuelle Arbeitsverzeichnis Ihrer Shell enthält) gegen „/foo/bar“, wenn dies der Fall ist stimmt, wird Ihre Variable exportiert, wenn dies nicht der Fall ist, wird die Variable zurückgesetzt.
Z. B.
[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]$
Wenn es Ihnen nichts ausmacht, eine Problemumgehung zu verwenden, fügen Sie diese zu Ihrem .bash_profile
hinzu
mycd()
{
cd $1
if [ "$(pwd)" == "/your/folder/that/needs/env" ]; then
export RAILS_ENV=development
else
export RAILS_ENV=
fi;
}
alias cd=mycd
Jedes Mal, wenn Sie zu einem bestimmten Ordner wechseln, wird dies Ihre Umgebungsvariable oder was auch immer Sie wollen setzen
Erstens, AFAIK, bash
sucht nicht nach .bashrc
Datei in einem anderen Verzeichnis als Ihrem Home-Verzeichnis -- zumindest nicht standardmäßig.
Zweitens, nachdem Sie neue Einträge in Ihren .bashrc
geschrieben haben , sollten Sie source .bashrc
der Datei, damit Änderungen stattfinden.