GNU/Linux >> Znalost Linux >  >> Linux

Nastavte proměnné prostředí v konkrétním adresáři

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.


Linux
  1. Jak nastavím pracovní adresář nadřazeného procesu?

  2. Nastavte výzvu terminálu v Ubuntu tak, aby zobrazovala pouze název pracovního adresáře namísto jeho úplné cesty

  3. rsync, takže všechny změny se objeví atomicky

  1. Naučte se, jak trvale nastavit proměnné $PATH v Linuxu

  2. Nastavte jméno odesílatele ve funkci pošty

  3. Jak přesměrovat ssh s AllowTcpForwarding nastaveným na ne?

  1. 7 Praktické příklady cd Command v Linuxu

  2. „Vnořování“ proměnných v bash

  3. Nastavit dočasné prostředí ($PATH)