Hoe en waarom sou jy die $ SHLVL veranderlike gebruik

Die $ SHLVL-veranderlike word gebruik om jou te vertel hoeveel skulpe diep jy is. As jy hieroor verwar word, is dit die moeite werd om aan die begin te begin.

Wat is 'n skulp?

'N Skulp neem opdragte en gee hulle aan die onderliggende bedryfstelsel om te presteer. Op die meeste Linux-stelsels word die skulpprogram genoem BASH (The Bourne Again Shell), maar daar is ander beskikbaar, insluitend die C Shell (tcsh) en die KORN-skulp (ksh).

Hoe om toegang tot die Linux Shell te kry

Oor die algemeen as gebruiker gebruik jy 'n terminale emuleringsprogram soos XTerm, konsole of gnome-terminale.

As jy 'n Windows-bestuurder soos Openbox of 'n lessenaar-omgewing soos GNOME of KDE uitvoer, sal jy 'n terminale emulator van 'n spyskaart of 'n streep kry. Op baie stelsels sal die kortpad CTRL ALT en T ook 'n terminaal venster oopmaak.

Alternatiewelik kan jy oorskakel na 'n ander tty (teletypewriter) wat direkte toegang tot 'n command line shell bied. Jy kan dit doen deur Ctrl ALT en F1 of CTRL ALT en F2 ens te druk.

Wat is 'n Shell-vlak

Wanneer jy 'n bevel in 'n dop uitvoer, loop dit op iets wat die dopvlak genoem word. Binne 'n dop kan jy 'n ander dop oopmaak wat dit 'n subskerm of die dop maak wat dit oopgemaak het.

Daarom sal die ouer dop oorweeg word as die vlak 1 dop en die kind dop sal 'n vlak 2 dop wees.

Hoe om die Shell-vlak te vertoon

Dit behoort nie so verrassend te wees nie, gebaseer op die titel van die artikel, dat die manier waarop jy kan aandui watter skaalvlak jy loop, is deur die $ SHLVL-veranderlike te gebruik.

Om die dopvlak te sien wat jy huidiglik uitvoer, tik die volgende:

echo $ SHLVL

Eerder interessant as jy die bogenoemde bevel binne 'n terminaal venster uitvoer, sal jy dalk verbaas wees om te sien dat die resultaat terugbesorg is, is 2.

As jy egter dieselfde bevel gebruik met die tty dan is die resultaat 1.

Hoekom is dit die geval wat jy dalk vra? Wel, die lessenaaromgewing wat jy hardloop, word op die top van 'n dop uitgevoer. Die dop sal vlak 1 wees. Enige terminaal venster wat u binne die lessenaaromgewing oopmaak, moet 'n kind wees van die dop wat die lessenaaromgewing oopmaak en daarom kan die dopvlak nie by enige ander nommer as 2 begin nie.

Die tty bedryf nie 'n lessenaaromgewing nie en is dus bloot 'n vlak 1 dop.

Hoe om Subshells te skep

Die maklikste manier om die konsep skulp en subshells te toets is soos volg. Open 'n terminaal venster en tik die volgende:

echo $ SHLVL

Soos ons van 'n terminale venster weet, is die minimum dopvlak 2.

Tik nou die volgende in die terminale venster:

sh

Die Sh-opdrag op sy eie loop 'n interaktiewe dop wat beteken dat jy 'n dop in 'n dop of 'n subskerm gebruik.

As jy dit nou weer tik:

echo $ SHLVL

Jy sal sien dat die dopvlak ingestel is op 3. Die uitvoering van die sh-bevel vanuit die subskerm sal 'n subskerm van die subskerm oopmaak en dus sal die dopvlak op vlak 4 wees.

Hoekom is die skulpvlak belangrik?

Die dopvlak is belangrik wanneer jy oor die omvang van veranderlikes in jou skrifte dink.

Kom ons begin met iets eenvoudig:

hond = Maisie
eggo $ hond

As u die bogenoemde opdrag in 'n dop uitvoer, word die woord maisie vertoon na die terminale venster.

Maak 'n nuwe dop oop deur die volgende te tik:

sh

As u hierdie opdrag uitvoer, sal u sien dat niks eintlik terugbesorg word nie:

eggo $ hond

Dit is omdat die $ -hasveranderlike slegs op skaalvlak 2 beskikbaar is. As u die uittreksel tik om die subskerm te verlaat en weer echo $-hond te voer, sal die woord maisie weer vertoon word.

Dit is ook die moeite werd om te dink oor die gedrag van globale veranderlikes binne 'n dop.

Begin in 'n nuwe terminaal en tik die volgende:

uitvoer hond = maisie
eggo $ hond

Soos jy sou verwag, word die woord Maisie vertoon. Maak nou 'n subskerm oop en tik echo $ hond weer. Hierdie keer sal jy sien dat die woord maisie vertoon word alhoewel jy in 'n subskerm is.

Die rede hiervoor is dat die uitvoeropdrag die $ -honderd veranderlike wêreldwyd gemaak het. As jy die $ -hasveranderlike binne die subskerm verander, selfs as jy die uitvoeropdrag gebruik, het dit geen invloed op sy ouerskulp nie.

Hopelik kan jy dit sien as jy weet dat die dopvlak waaraan jy werk, betekenisvol is wanneer jy skrifte skryf.

Die voorbeelde wat ek gegee het, is baie simplisties, maar dit is baie algemeen dat een dopskrip 'n ander dopskrip bel, wat op sy beurt weer 'n dopskrip noem, almal wat nou op verskillende vlakke hardloop. Om die dopvlak te ken, kan baie belangrik wees.