Nedávno jsem objevil /etc/environment
, což se zdá být standardnějším způsobem nastavení jednoduchých proměnných prostředí než skripty, ale zajímalo by mě, jestli existuje způsob, jak zpětně odkazovat na proměnné prostředí v souboru /etc/environment.
To znamená, že mám toto:
JAVA_HOME="/tools/java"
GRAILS_HOME="/tools/grails"
GROOVY_HOME="/tools/groovy"
GRADLE_HOME="/tools/gradle"
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
Pokud se pokusím přidat $JAVA_HOME/bin
k definici PATH však dostanu $JAVA_HOME/bin a ne interpolovanou proměnnou. Abych to napravil, vytvářím environment.sh v profile.d k přidání /bin
vstupy do cesty, ale zdá se to nedbalé a neuspořádané.
Existuje způsob, jak zpětně odkazovat na proměnné prostředí v /etc/environment?
Nejlepší odpověď
/etc/environment
soubor čte pam_env
modul PAM. Podporuje pouze jednoduché páry klíč–hodnota, bez substituce na pravé straně.
Pokud chcete vytvořit hodnotu pomocí substitucí nebo jiných expanzí shellu, musíte projít shellem. /etc/profile
(nebo soubor v /etc/profile.d
) je pro ně tím správným místem. Toto je tradiční místo (/etc/environment
je relativně nedávná inovace v historii unixových systémů) a na jejím používání rozhodně není nic nedbalého. Hlavní výhoda /etc/environment
spočívá v tom, že umožňuje nastavení proměnných prostředí i pomocí přihlašovacích metod, které nezahrnují shell, nebo pro uživatele, kteří používají jiný shell než Bourne, ale ty nejsou v praxi běžné.