Proměnné prostředí existují pro vylepšení a standardizaci vašeho prostředí shellu na systémech Linux. Existují standardní proměnné prostředí, které za vás systém nastaví, ale můžete také nastavit své vlastní proměnné prostředí nebo volitelně změnit výchozí, aby vyhovovaly vašim potřebám.
[ Bezplatné stažení:cheat pro pokročilé příkazy systému Linux. ]
Počínaje env
příkaz
Pokud chcete vidět proměnné prostředí, použijte env
příkaz a hledejte slova velkými písmeny na výstupu zcela vlevo. Toto jsou vaše proměnné prostředí a jejich hodnoty jsou vpravo:
$ env
LS_COLORS=(long output)
LANG=en_US.UTF-8
HISTCONTROL=ignoredups
HOSTNAME=rhel8t
XDG_SESSION_ID=5
USER=khess
SELINUX_ROLE_REQUESTED=
PWD=/home/khess
HOME=/home/khess
SSH_CLIENT=192.168.1.94 53911 22
SELINUX_LEVEL_REQUESTED= XDG_DATA_DIRS=/home/khess/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
SSH_TTY=/dev/pts/1
MAIL=/var/spool/mail/khess
TERM=xterm-256color
SHELL=/bin/bash SELINUX_USE_CURRENT_RANGE=
SHLVL=1
LOGNAME=khess
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
XDG_RUNTIME_DIR=/run/user/1000 PATH=/home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/bin
HISTSIZE=1000
LESSOPEN=||/usr/bin/lesspipe.sh %s _=/usr/bin/env
Vynechal jsem výstup LS_COLORS
variabilní, protože je tak dlouhý. Vyzkoušejte tento příkaz ve svém systému, abyste viděli, jak vypadá úplný výstup.
Mnoho proměnných prostředí je nastaveno a poté exportováno z /etc/profile
a soubor /etc/bashrc
soubor. V /etc/profile
je řádek to zní:
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
Chcete-li provést trvalé změny proměnných prostředí pro všechny nové účty, přejděte do /etc/skel
soubory, jako je .bashrc
a změňte ty, které již existují, nebo zadejte nové. Když vytváříte nové uživatele, tyto /etc/skel
soubory budou zkopírovány do domovského adresáře nového uživatele.
Zkoumání úrovní shellu (SHLVL
)
Chcete-li volat hodnotu jedné proměnné prostředí, zadejte následující příkaz pomocí SHLVL
(Shell Level) jako příklad:
$ echo $SHLVL 1
Tato proměnná se mění v závislosti na tom, kolik podsložek máte otevřených. Zadejte například bash
dvakrát a poté zadejte příkaz znovu:
$ bash
$ bash echo $SHLVL 3
Úroveň shellu tři znamená, že jste hluboko ve dvou podslupkách, takže napište exit
dvakrát, abyste se vrátili do běžného prostředí.
[Chcete vyzkoušet Red Hat Enterprise Linux? Stáhněte si ji nyní zdarma.]
Manipulace s PATH
proměnná
PATH
obsahuje vyhledávací cestu pro provádění příkazů a skriptů. Chcete-li zobrazit vaši PATH
, zadejte:
$ echo $PATH /home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
Dočasně změňte PATH
zadáním následujícího příkazu přidejte /opt/bin
:
$ PATH=$PATH:/opt/bin
$ echo $PATH /home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/bin
Změna je pro aktuální relaci dočasná. Není trvalé, protože není zadáno do .bashrc
soubor. Aby byla změna trvalá, zadejte příkaz PATH=$PATH:/opt/bin
do vašeho domovského adresáře .bashrc
soubor.
Když to uděláte, vytvoříte novou PATH
proměnnou připojením adresáře k aktuální PATH
proměnná $PATH
. Dvojtečka (:
) odděluje PATH
záznamy.
Rozluštění $USER
, $PWD
a $LOGNAME
Měl jsem teorii, o které si myslím, že byla rozptýlena mým vlastním dobrým já. Moje teorie byla, že příkazy pwd
a whoami
pravděpodobně jen přečetl a zopakoval obsah proměnných shellu $PWD
a $USER
nebo $LOGNAME
, resp. K mému překvapení po nahlédnutí do zdrojového kódu ne. Možná bych je měl přepsat, abych to udělal. Není důvod přidávat více knihoven a téměř 400 řádků kódu C pro zobrazení pracovního adresáře. Stačí si přečíst $PWD
a odešlete to na obrazovku (stdout). Totéž platí pro whoami
buď s $USER
nebo $LOGNAME
.
Pokud se chcete na zdrojový kód podívat sami, najdete jej na GitHubu a dalších místech. Pokud zjistíte, že tyto programy (nebo jiné) používají proměnné shellu, rád bych o tom věděl. Přiznávám, že nejsem tak dobrý ve čtení zdrojového kódu C, takže by mohli velmi dobře používat proměnné shellu a nikdy bych to nevěděl. Z toho, co jsem četl, to prostě nevypadalo a bylo jim rozumět.
Hraní $SHELL
hra
V tomto posledním přehledu proměnných prostředí vám chci ukázat, jak funguje $SHELL
variabilní přijde vhod. Nemusíte zůstat ve svém výchozím prostředí, což je pravděpodobně Bash. Můžete vstoupit a pracovat v jakémkoli prostředí, které je nainstalované v systému. Chcete-li zjistit, které shelly jsou nainstalovány ve vašem systému, použijte následující příkaz:
$ cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash
Všichni tito jsou ve skutečnosti Bash, takže se nevzrušujte. Pokud budete mít štěstí, můžete také vidět položky pro /bin/tcsh
, /bin/csh
, /bin/mksh
, /bin/ksh
a /bin/rksh
.
Můžete použít kteroukoli z těchto skořápek a mít v každé jiné věci, pokud jste tak nakloněni. Ale řekněme, že jste správce Solaris a chcete používat shell Korn. Výchozí shell můžete změnit na /bin/ksh
pomocí chsh
příkaz:
$ chsh Changing shell for khess. New shell [/bin/bash]: /bin/ksh Password: Shell changed.
Nyní, když zadáte echo $SHELL
, odpověď bude /bin/bash
, takže se musíte odhlásit a znovu přihlásit, abyste viděli změnu. Jakmile se odhlásíte a přihlásíte, obdržíte jinou odpověď na echo $SHELL
.
Můžete zadat další shelly a echo $SHELL
měl by nahlaste svůj aktuální shell a $SHLVL
, což vám umožní orientovat se v tom, kolik granátů jste hluboko.
Nastavení vlastních proměnných prostředí
Můžete nastavit své vlastní proměnné na příkazovém řádku pro každou relaci, nebo je nastavit jako trvalé umístěním do ~/.bashrc
soubor, ~/.profile
, nebo jakýkoli spouštěcí soubor, který používáte pro svůj výchozí shell. Na příkazovém řádku zadejte proměnnou prostředí a její hodnotu jako dříve při změně PATH
proměnná.
Koneckonců
Proměnné prostředí nebo prostředí jsou užitečné pro uživatele, správce systému i programátory. Jsou užitečné na příkazovém řádku a ve skriptech. V průběhu let jsem je používal k mnoha různým účelům, a i když jsou některé z nich pravděpodobně trochu netradiční, fungovaly a fungují. Vytvořte si vlastní nebo použijte ty, které vám poskytne systém a nainstalované aplikace. Skutečně mohou obohatit vaši uživatelskou zkušenost s Linuxem.
Jako vedlejší poznámku k proměnným a shellům, myslí si někdo, že ti, kdo programují v JSON, by měli mít povoleno používat pouze Bourne Shell? Diskutujte.