Proměnná $ SHLVL vám řekne, kolik hlubokých skořápek máte. Pokud jste z toho zmatení, stojí za to začít na začátku.
Co je to skořápka?
Shell přijímá příkazy a dává tyto příkazy k provedení základnímu operačnímu systému. Na většině systémů Linux se shell program nazývá BASH (The Bourne Again Shell), ale existují i jiné, včetně C Shell (tcsh) a KORN shell (ksh).
Jak přistupovat k Linux Shell
Obecně jako uživatel komunikujete s programem shell prostřednictvím programu emulace terminálu, jako je XTerm, konsole nebo gnome-terminal. Pokud spustíte správce oken, jako je Openbox, nebo desktopové prostředí, jako je GNOME nebo KDE, najdete emulátor terminálu buď z nabídky, nebo z pomlčky. Na mnoha systémech zkratka CTRL+ALT+T otevře okno terminálu. Alternativně můžete přepnout na jiný TTY (dálnopis), který poskytuje přímý přístup k prostředí příkazového řádku. To lze provést stisknutím CTRL+ALT+F1 nebo CTRL+ALT+F2.
Co je to úroveň skořápky?
Když spustíte příkaz v shellu, spustí se na úrovni shellu. V rámci shellu můžete otevřít další shell, což z něj činí podsloupku shellu, který jej otevřel. Proto je nadřazený shell považován za shell 1. úrovně a podřízený shell je shell 2. úrovně.
Jak zobrazit úroveň skořápky
Způsob, jak zjistit, na jaké úrovni shellu běžíte, je použít proměnnou $ SHLVL. Chcete -li zobrazit úroveň shellu, ve které právě běžíte, zadejte následující: echo $ SHLVL
type = „code“> Když spustíte výše uvedený příkaz v okně terminálu, vrátí se výsledek 2. Pokud však spustíte stejný příkaz pomocí tty, pak je výsledek 1. Tty nespouští desktop prostředí a je to shell 1. úrovně. Proč tomu tak je? Desktopové prostředí, které používáte, je spuštěno nad shellem. Tento shell je na úrovni 1. Každé okno terminálu, které otevřete z tohoto desktopového prostředí, je potomkem shellu, který otevíral desktopové prostředí. Úroveň shellu proto nemůže začínat na jiném čísle než 2.
Jak vytvořit podsvícení
Nejsnadnější způsob, jak otestovat koncepci skořepin a podsítí, je následující. Otevřete okno terminálu a zadejte následující: echo $ SHLVL
type = „code“> Když spustíte tento příkaz z okna terminálu, minimální úroveň shellu je 2. Do okna terminálu zadejte následující: sh
type = „code“> Příkaz sh spouští interaktivní prostředí. To znamená, že používáte shell v shellu nebo v subshell. Pokud toto zadáte znovu: echo $ SHLVL
type = „code“> Vidíte, že úroveň shellu je nastavena na 3. Spuštěním příkazu sh ze subshell se otevře subshell subshell, takže úroveň shellu je na úrovni 4.
Proč je úroveň skořápky důležitá?
Úroveň prostředí je důležitá při přemýšlení o rozsahu proměnných ve vašich skriptech. Pro jednoduchý příklad: pes = maisie
echo $ pes
type = „code“> Pokud výše uvedený příkaz spustíte v shellu, slovo maisie se zobrazí v okně terminálu. Chcete -li otevřít nový shell, zadejte následující příkaz: sh
type = „code“> Když spustíte tento příkaz, uvidíte, že se nic nevrací: echo $ dog
type = „code“> Důvodem je to, že proměnná $ dog je k dispozici pouze na úrovni shellu 2. Pokud zadáte exit, ukončíte subshell a spustíte echo $ pes opět to slovo maisie zobrazí znovu. Také stojí za to přemýšlet o chování globálních proměnných v prostředí. Otevřete nové okno terminálu a zadejte následující příkaz: export dog = maisie
echo $ pes
typ = „kód“> Podle očekávání slovo maisie zobrazí. Dále otevřete podshell a zadejte echo $ pes znovu. Tentokrát slovo maisie se zobrazí, i když jste v subshell. Důvodem je to, že příkaz export učinil proměnnou $ dog globální. Změna proměnné $ dog v subshell, i když použijete příkaz export, neovlivní její nadřazené prostředí. Znalost úrovně shellu, na které pracujete, má význam při psaní skriptů. Příklady v tomto článku jsou jednoduché, ale je běžné, že jeden shell skript zavolá jiný shell skript, který zase volá jiný shell shell. Všechny tyto běží na různých úrovních. Znalost úrovně skořápky je důležitá.