Kiel kaj Kial Vi Uzus La $ SHLVL-Variablon

La $ SHLVL-variaĵo estas uzata por rakonti al vi kiom da ŝeloj estas profundaj. Se vi konfuzas vin ĉi tio valoras komenci.

Kio Estas Ŝelo?

Ŝelo prenas komandojn kaj donas ilin al la suba operaciumo por plenumi. Sur la plej multaj Linuksaj sistemoj la konka programo estas nomita BASH (La Bourne Again Shell) sed ekzistas aliaj disponeblaj inkluzive de la C Shell (tcsh) kaj la KORN-ŝelo (ksh).

Kiel Aliri La Linulan Ŝelon

Ĝenerale kiel uzanto vi interagas kun la konka programo per la uzo de fina stacio de emulado kiel XTerm, konsole aŭ gnome-terminal.

Se vi administras fenestran administranton kiel Openbox aŭ labortabla medio, ekzemple GNOME aŭ KDE, vi trovos fina stacion emulator aŭ de menuo aŭ dash. En multaj sistemoj la mallongigo CTRL ALT kaj T ankaŭ malfermos fina stacion.

Alternative vi povas ŝanĝi al alia tty (teletypewriter) kiu provizas rektan aliron al komandlinio. Vi povas fari ĉi tion premante CTRL ALT kaj F1 aŭ CTRL ALT kaj F2 ktp.

Kio Estas Ŝelo-Nivelo

Kiam vi kuras komandon en ŝelo, ĝi kuras ĉe io, nomata la ŝelo-nivelo. Ene de ŝelo vi povas malfermi alian ŝelon, kiu faras ĝin subshello aŭ ŝelo, kiu malfermis ĝin.

Sekve la gepatra konko estus konsiderita eble la nivelo 1-ŝelo kaj la infana ŝelo estus nivelo 2-ŝelo.

Kiel Montri La Concha Nivelo

Nepre surpriziĝu sur la titolo de la artikolo, ke vi povas rakonti, kian ŝelon, kiun vi kuŝas, uzas la $ SHLVL-variablon.

Por vidi la ŝelon, kiun vi nun uzas, tajpu la jenan:

eĥas $ SHLVL

Prefere, se vi kuras la supre komandon ene de fina fenestro, vi eble surprizos vidi, ke la rezulto revenita estas 2.

Se tamen vi kuras la saman komandon uzante tt tiam la rezulto estas 1.

Kial do vi petas ĉi tion? Nu, la labortablaĵo, kiun vi kuras, estas kurita sur supro de ŝelo. Tiu konko estus nivelo 1. Ĉiu fina fenestro, kiun vi malfermos el tiu labortabla medio, devas esti infano de la ŝelo, kiu malfermis la labortablon kaj do la ŝelo-nivelo ne povas komenci ĉe iu ajn alia numero.

La tty ne funkcias en labortabla medio kaj do estas nur nivelo 1-ŝelo.

Kiel krei kromsubilojn

La plej facila maniero por provi la koncepton de konkoj kaj subŝlosiloj estas la sekva. Malfermu fenestron fina stacio kaj tajpu la jenajn:

eĥas $ SHLVL

Kiel ni scias de fina stacio, la minimuma ŝelo-nivelo estas 2.

Nun en la fina fenestro tajpu la jenajn:

sh

La sh komando sur sia propra kuras interaga ŝelo, kiu signifas, ke vi uzas ŝelon ene de ŝelo aŭ subshello.

Se vi nun tajpas ĉi tion denove:

eĥas $ SHLVL

Vi vidos, ke la ŝelo-nivelo estas agordita al 3. Sekvi la ordonon de ene de la subshello malfermos subshellon de la subshello kaj do la ŝelo-nivelo estos ĉe nivelo 4.

Kial Estas La Ŝela Nivelo Grava?

La ŝelo-nivelo estas grava, kiam vi pensas pri la amplekso de variabloj ene de viaj skriptoj.

Komencu kun io simpla:

hundo = maisie
eĥo $ hundo

Se vi kuras la supre komandon en ŝelo, la vorto maisie estos montrata al la fina fenestro.

Malfermu novan ŝelon tajpante la jenon:

sh

Se vi kuros ĉi tiun ordonon, vi vidos, ke nenio efektive estas revenita:

eĥo $ hundo

Ĉi tio estas, ĉar la $ hundo variablo nur estas disponebla ĉe ŝelo-nivelo 2. Se vi tajpas eliron por eliri la subshellon kaj kuri eĥon $ hundon denove la vorto maisie estos denove montrita.

Ĝi ankaŭ valoras pensi pri la konduto de tutmondaj variabloj ene de ŝelo.

Komencu en nova fina stacio kaj tajpu la jenajn:

eksportado hundo = maisie
eĥo $ hundo

Kiel vi atendus, la vorto maisie montriĝos. Nun malfermu subshellon kaj tajpu eĥon $ hundon denove. Ĉi-foje vi vidos, ke la vorto maisie montriĝos kvankam vi estas en subaŝelo.

La kialo por tio estas, ke la eksporta komando faris la $ hundan variablon tutmondan. Ŝanĝi la $ hundan variablon ene de la subshello eĉ se vi uzas la eksportan komandon ne influas ĝiajn gepatrojn.

Espereble de ĉi tio vi povas vidi, ke sciante la ŝelon, kiun vi laboras, havas iujn signifojn, kiam vi skribas skriptoj.

La ekzemploj, kiujn mi donis, estas tre simplistaj, sed ĝi estas sufiĉe komuna, ke unu ŝelo-skripto vokas alian ŝelon-skripton, kiu alvokas alian ŝelon-skripton, ĉiuj nun kurantaj ĉe malsamaj niveloj. Sciante la ŝelon-nivelon povas esti tre grava.