Kuidas ja miks sa kasutad $ SHLVL muutujaid

$ SHLVL-i muutuja kasutatakse, et öelda teile, kui palju karpe on sügav. Kui teid segi ajada, peaksite alustama alguses.

Mis on shell?

Kest võtab käsud ja annab neile aluseks oleva operatsioonisüsteemi, mida ta peab täitma. Enamikus Linuxi süsteemides on shellprogrammi nimetuseks BASH (The Bourne Again Shell), kuid on olemas ka teised, sealhulgas C Shell (tcsh) ja KORN-i shell (ksh).

Kuidas saada Linuxi shellisse

Üldiselt kasutajana suhtlete shelliprogrammiga terminali emuleerimisprogrammi , näiteks XTermi, konsooli või gnome-terminali kaudu.

Kui kasutate Windowsi haldurit nagu Openbox või töölaua keskkond, näiteks GNOME või KDE, leiate terminali emulatori menüüst või kriipsist. Paljude süsteemide korral avab kiirklahv CTRL ALT ja T terminaliakna samuti.

Teise võimalusena võite lülituda teisele tty-le (teletypewriter), mis pakub otsest juurdepääsu käsurea shellile. Seda saate teha, vajutades CTRL ALT ja F1 või CTRL ALT ja F2 jne

Mis on shelli tase?

Kui käivitate käsku shellis, käib see mõne nimega shell tasemel. Ülaosas saab avada uue kooriku, mis muudab selle alamkanaliks või selle avanud kest.

Seepärast peetakse vanemaketast ehk tase 1 kestaks ja lapse kate oleks 2. taseme kest.

Kuidas kuvada shelli tase

Artikli pealkirjas ei tohiks üllatusena tuletada, et saate määrata $ SHLVL-i muutuja abil, kuidas saate teada, millist shelli taset te töötate.

Tüüpi shelli nägemiseks näete järgmist:

echo $ SHLVL

Pigem huvitavalt, kui käitate terminali aknas ülaltoodud käsu, võite olla üllatunud, et tagastab 2 tulemuse.

Kui aga käivitate sama käsku kasutades tty, siis on tulemuseks 1.

Miks on see juhtum, mille võite küsida? Noh töölaua keskkond, kus te töötate, käivitatakse shelli peal. See kate oleks tasemel 1. Kõik selle töökeskkonna kaudu avatavad terminali aknad peavad olema töölaua keskkonda avanud kesta laps, mistõttu shelli tase ei saa käivituda muul arvul kui 2.

Tty ei käivita töölaua keskkonda ja on seega lihtsalt taseme 1 shell.

Kuidas luua Subshells

Lihtsaim viis karpide ja alamhulgala mõistete testimiseks on järgmine. Avage terminali aken ja sisestage järgmine:

echo $ SHLVL

Nagu teame terminalaknast, on minimaalne koorma tase 2.

Nüüd aknas terminali aknas kirjuta järgmine:

sh

Käsk sh ise töötab interaktiivse shelliga, mis tähendab, et kasutate shellis olevat shelli või alamkanalit.

Kui sisestate selle uuesti uuesti:

echo $ SHLVL

Näete, et shelli tase on määratud 3. Käsk sh käivitamine allsektsioonis avab alamhulga alamhulga ja seega on koori tase tasemel 4.

Miks Shelli tase on oluline?

Koorte tase on oluline, kui mõelda oma skriptide muutujate ulatusest.

Alustame midagi lihtsat:

koer = maisie
echo $ dog

Kui käivitate ülaltoodud käsu shellis, kuvatakse terminiaknas sõna maisie.

Avage uus kest, sisestage järgmised andmed:

sh

Kui käivitate selle käsu, näete, et midagi pole tegelikult tagastatud:

echo $ dog

Seda sellepärast, et $ dogi muutuja on saadaval ainult shelli tasemel 2. Kui sisestate alamkaustas väljumiseks käsku exit ja käivitage uuesti echo $ dog, kuvatakse jälle sõna maisie.

Tasub ka mõelda globaalsete muutujate käitumisele kesta sees.

Alusta uues terminaliaknas ja tippige järgmine:

ekspordi koer = maisie
echo $ dog

Nagu ootaks, kuvatakse sõna maisie. Avage alamkaust ja tippige echo $ dog uuesti. Seekord näete, et sõna maisie kuvatakse, kuigi oled alamjooksus.

Põhjuseks on see, et ekspordikäsklus tegi $ dogi muutuja globaalseks. $ Dog varieeruvuse muutmine alamkataloogis, isegi kui kasutate ekspordi käsku, ei mõjuta tema vanemakereid.

Loodetavasti näete sellest, et skriptide kirjutamisel on mõni oluline tähendus, kui teate, milline koondtasand töötab.

Näited, mida ma olen andnud, on väga lihtsad, kuid ühel shelliskriptil on üsna tavaline mõni teine ​​shelliskript, mis omakorda kutsub teist shelli skripti, kus kõik need nüüd töötavad erinevatel tasanditel. Koori taseme tundmine võib olla väga tähtis.