V systémech založených na Linuxu a Unixu jsou proměnné prostředí sadou dynamických pojmenovaných hodnot uložených v systému, které používají aplikace spouštěné v prostředí shell nebo podshell. Jednoduše řečeno, proměnná prostředí je proměnná s názvem a přidruženou hodnotou.
Proměnné prostředí vám umožňují přizpůsobit fungování systému a chování aplikací v systému. Proměnná prostředí může například ukládat informace o výchozím textovém editoru nebo prohlížeči, cestě ke spustitelným souborům nebo národním prostředí systému a nastavení rozložení klávesnice.
V této příručce vysvětlíme čtení a nastavení proměnných prostředí a prostředí.
Proměnné prostředí a proměnné prostředí #
Proměnné mají následující formát:
KEY=value
KEY="Some other value"
KEY=value1:value2
- V názvech proměnných se rozlišují velká a malá písmena. Podle konvence by proměnné prostředí měly mít názvy VELKÁ PÍSMENA.
- Při přiřazování více hodnot proměnné musí být odděleny dvojtečkou
:
postava. - Kolem rovná se
=
není žádná mezera symbol.
Proměnné lze rozdělit do dvou hlavních kategorií, proměnné prostředí a proměnné prostředí.
Proměnné prostředí jsou proměnné, které jsou dostupné v celém systému a jsou zděděny všemi vytvořenými podřízenými procesy a shelly.
Proměnné prostředí jsou proměnné, které se vztahují pouze na aktuální instanci shellu. Každý shell, jako je zsh
a bash
, má vlastní sadu interních proměnných shellu.
Existuje několik dostupných příkazů, které vám umožňují vypsat a nastavit proměnné prostředí v Linuxu:
env
– Příkaz vám umožňuje spustit jiný program ve vlastním prostředí, aniž byste změnili ten aktuální. Při použití bez argumentu vypíše seznam aktuálních proměnných prostředí.printenv
– Příkaz vytiskne všechny nebo zadané proměnné prostředí.set
– Příkaz nastaví nebo zruší nastavení proměnných shellu. Při použití bez argumentu vypíše seznam všech proměnných včetně proměnných prostředí a shellu a funkcí shellu.unset
– Příkaz odstraní proměnné prostředí a prostředí.export
– Příkaz nastavuje proměnné prostředí.
Seznam proměnných prostředí #
Nejpoužívanějším příkazem pro zobrazení proměnných prostředí je printenv
. Pokud je název proměnné předán jako argument příkazu, zobrazí se pouze hodnota této proměnné. Pokud není zadán žádný argument, printenv
vypíše seznam všech proměnných prostředí, jednu proměnnou na řádek.
Například pro zobrazení hodnoty HOME
proměnná prostředí, kterou byste spustili:
printenv HOME
Výstup vypíše cestu aktuálně přihlášeného uživatele:
/home/linuxize
Do printenv
můžete také předat více než jeden argument příkaz:
printenv LANG PWD
en_US
/home/linuxize
Pokud spustíte printenv
nebo env
příkaz bez jakýchkoli argumentů zobrazí seznam všech proměnných prostředí:
printenv
Výstup bude vypadat nějak takto:
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35;...
LESSCLOSE=/usr/bin/lesspipe %s %s
LANG=en_US
S_COLORS=auto
XDG_SESSION_ID=5
USER=linuxize
PWD=/home/linuxize
HOME=/home/linuxize
SSH_CLIENT=192.168.121.1 34422 22
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
SSH_TTY=/dev/pts/0
MAIL=/var/mail/linuxize
TERM=xterm-256color
SHELL=/bin/bash
SHLVL=1
LANGUAGE=en_US:
LOGNAME=linuxize
XDG_RUNTIME_DIR=/run/user/1000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
LESSOPEN=| /usr/bin/lesspipe %s
_=/usr/bin/printenv
Níže jsou uvedeny některé z nejběžnějších proměnných prostředí:
USER
- Aktuální přihlášený uživatel.HOME
- Domovský adresář aktuálního uživatele.EDITOR
- Výchozí editor souborů, který se má použít. Toto je editor, který se použije, když napíšeteedit
ve vašem terminálu.SHELL
– Cesta k shellu aktuálního uživatele, jako je bash nebo zsh.LOGNAME
– Jméno aktuálního uživatele.PATH
- Seznam adresářů, které se mají prohledávat při provádění příkazů. Když spustíte příkaz, systém prohledá tyto adresáře v tomto pořadí a použije první nalezený spustitelný soubor.LANG
– Aktuální nastavení národního prostředí.TERM
- Aktuální emulace terminálu.MAIL
– Umístění, kde je uložena pošta aktuálního uživatele.
printenv
a env
příkazy tisknou pouze proměnné prostředí. Pokud chcete získat seznam všech proměnných, včetně prostředí, shellu a proměnných a funkcí shellu, můžete použít set
příkaz:
set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
Příkaz zobrazí velký seznam všech proměnných, takže pravděpodobně budete chtít přesměrovat výstup do less
příkaz.
set | less
Můžete také použít příkaz echo k vytištění proměnné shellu. Chcete-li například vytisknout hodnotu BASH_VERSION
proměnnou, kterou byste spustili:
echo $BASH_VERSION
4.4.19(1)-release
Nastavení proměnných prostředí #
Abychom lépe ilustrovali rozdíl mezi proměnnými prostředí a prostředí, začneme nastavením proměnných prostředí a poté přejdeme k proměnným prostředí.
Chcete-li vytvořit novou proměnnou prostředí s názvem MY_VAR
a hodnotu Linuxize
jednoduše napište:
MY_VAR='Linuxize'
Nastavení proměnné můžete ověřit buď pomocí echo $MY_VAR
filtrování výstupu příkazu set pomocí grepset | grep MY_VAR
:
echo $MY_VAR
Linuxize
Použijte printenv
příkaz ke kontrole, zda je tato proměnná proměnnou prostředí či nikoli:
printenv MY_VAR
Výstup bude prázdný, což nám říká, že proměnná není proměnná prostředí.
Můžete také zkusit vytisknout proměnnou v novém shellu a dostanete prázdný výstup.
bash -c 'echo $MY_VAR'
export
příkaz se používá k nastavení proměnných prostředí.
Chcete-li vytvořit proměnnou prostředí, jednoduše exportujte proměnnou prostředí jako proměnnou prostředí:
export MY_VAR
Můžete to zkontrolovat spuštěním:
printenv MY_VAR
Linuxize
Pokud se tentokrát pokusíte vytisknout proměnnou v novém shellu, dostanete název proměnné vytištěný na vašem terminálu:
bash -c 'echo $MY_VAR'
Linuxize
Můžete také nastavit proměnné prostředí na jednom řádku:
export MY_NEW_VAR="My New Var"
Proměnné prostředí vytvořené tímto způsobem jsou dostupné pouze v aktuální relaci. Pokud otevřete nový shell nebo se odhlásíte, všechny proměnné budou ztraceny.
Trvalé proměnné prostředí #
Aby proměnné prostředí byly trvalé, musíte tyto proměnné definovat v konfiguračních souborech bash. Ve většině distribucí Linuxu se při zahájení nové relace čtou proměnné prostředí z následujících souborů:
-
/etc/environment
- Tento soubor použijte k nastavení systémových proměnných prostředí. Proměnné v tomto souboru jsou nastaveny v následujícím formátu:FOO=bar
VAR_TEST="Test Var"
-
/etc/profile
- Proměnné nastavené v tomto souboru se načtou při každém zadání přihlašovacího shellu bash. Při deklaraci proměnných prostředí v tomto souboru musíte použítexport
příkaz:export JAVA_HOME="/path/to/java/home"
export PATH=$PATH:$JAVA_HOME/bin
-
Konfigurační soubory specifické pro jednotlivé uživatele. Pokud například používáte Bash, můžete deklarovat proměnné v
~/.bashrc
:export PATH="$HOME/bin:$PATH"
Chcete-li načíst nové proměnné prostředí do aktuální relace shellu, použijte source
příkaz:
source ~/.bashrc
Závěr č.
V této příručce jsme vám ukázali, jak nastavit a vypsat proměnné prostředí a shellu.
Pokud máte nějaké dotazy, neváhejte zanechat komentář.