Ինչպես եւ ինչու եք օգտագործել $ SHLVL փոփոխական

$ SHLVL փոփոխականն օգտագործվում է ձեզ պատմելու համար, թե որքան խորաթափանցիկ եք դուք: Եթե ​​դուք շփոթված եք դրա համար, արժե սկսել սկզբից:

Ինչ է սա:

A shell- ն ընդունում է հրամանները եւ տալիս նրանց հիմքում ընկած օպերացիոն համակարգը: Linux համակարգերի մեծ մասում shell ծրագիրը կոչվում է BASH (The Bourne Again Shell), բայց կան նաեւ ուրիշներ, ներառյալ C Shell (tcsh) եւ KORN shell (ksh):

Ինչպես օգտվել Linux Shell- ին

Ընդհանրապես, որպես օգտագործող, դուք հաղորդակցվում եք շերտերի ծրագրով `XTerm, konsole կամ gnome-terminal- ի օգտագործման միջոցով:

Եթե ​​դուք աշխատում եք պատուհանների կառավարիչ, ինչպիսիք են Openbox- ը կամ Desktop- ի միջավայրը, ինչպիսիք են GNOME կամ KDE- ը, դուք կգտնեք տերմինալի էմուլատոր կամ մենյուից կամ տողից: Շատ համակարգերում CTRL ALT եւ T դյուրանցումները կբացվեն նաեւ տերմինալային պատուհան:

Alternatively, դուք կարող եք անցնել մեկ այլ tty (teletypewriter), որն ապահովում է անմիջական հասանելիություն հրամանի տող շեղում: Դուք կարող եք դա անել, սեղմելով CTRL ALT եւ F1 կամ CTRL ALT եւ F2 եւ այլն:

Ինչ է նշանակում Shell մակարդակը

Երբ դուք հրաման եք վարում վահանակում, այն աշխատում է շերտերի մակարդակի կոչվող մի բանով: Շաբլոնի ներսում դուք կարող եք բացել մեկ այլ վահանակ, որը դարձնում է այն ենթահեղձ կամ շերտ, որը բացեց այն:

Հետեւաբար ծնողի միջադիրը համարվում էր հավանական մակարդակի 1 միջադիր, եւ երեխայի շերտը կլինի 2 մակարդակ:

Ինչպես ցուցադրել Shell մակարդակը

Այն պետք է լինի ոչ մի անակնկալ, որը հիմնված է հոդվածի վերնագրի վրա, որ դուք կարող եք ասել, թե որն է Ձեր վահանակի մակարդակը, որն օգտագործվում է $ SHLVL փոփոխականով:

Տեսնելու համար, որ դուք ներկայումս վարում եք սավանի մակարդակը, հետեւյալը.

echo $ SHLVL

Ավելի շուտ հետաքրքիր է, եթե դուք գործարկեք վերը նշված հրամանը տերմինալային պատուհանի մեջ, դուք կարող եք զարմանալ, որ արդյունքը վերադարձավ 2:

Այնուհանդերձ, եթե դուք միեւնույն հրամանը վարում եք tty- ով, ապա արդյունքը 1 է:

Ինչու է այդպես վարվել: Դե, դուք աշխատում եք աշխատասեղանի միջավայրը, որը վազում է վահանակի վերեւում: Այդ շերտը կլինի մակարդակ 1: Այդ սեղանադիր միջավայրում բացվող ցանկացած տերմինալային պատուհանը պետք է լինի սաղավարտի երեխա, որը բացեց աշխատասեղանի միջավայրը եւ, հետեւաբար, սաղավարտի մակարդակը չի կարող սկսվել ոչ այլ թվից:

The tty- ն չի աշխատում աշխատասեղանի միջավայրի եւ, հետեւաբար, պարզապես մակարդակի 1 shell է:

Ինչպես ստեղծել Subshells

Ռումբերն ու ենթախմբերը հասկանալու ամենահեշտ ձեւը հետեւյալն է. Բացել տերմինալային պատուհանը եւ մուտքագրել հետեւյալը.

echo $ SHLVL

Ինչպես հայտնի է, տերմինալային պատուհանից նվազագույն շերտերի մակարդակը 2 է:

Այժմ տերմինալային պատուհանը ներառում է հետեւյալը.

sh

Sh- ի հրամանը ինքնուրույն վարում է ինտերակտիվ վահանակ, ինչը նշանակում է, որ դուք օգտագործում եք մի շաբլոնի միջով կամ ենթահեղձում:

Եթե ​​հիմա նորից գրեք:

echo $ SHLVL

Դուք կտեսնեք, որ վահանակի մակարդակը սահմանվում է 3-ի վրա: Ներքին հրամանների ներգրավումը ենթախմբի ներսումից կբացվի ենթավերնագրի ենթախմբում եւ այդպիսով վահանակի մակարդակը կլինի 4-րդ մակարդակում:

Ինչու է Shell- ի մակարդակը կարեւոր է:

Shell- ի մակարդակը կարեւոր է, երբ մտածում եք ձեր սցենարների շրջանակներում փոփոխականների շրջանակը:

Սկսենք մի պարզ բանով.

շուն = maisie
echo $ dog

Եթե ​​դուք վարում եք վերը նշված հրամանները մի շերտում, ապա maisie բառը կցուցադրվի տերմինալային պատուհան:

Բացեք նոր վահանակ `մուտքագրելով հետեւյալը.

sh

Եթե ​​դուք այս հրամանին եք անցնում, կտեսնեք, որ ոչինչ չի ստացվում:

echo $ dog

Դա այն է, որ $ dog փոխակերպիչը հասանելի է միայն վահանակի մակարդակով 2: Եթե մուտքագրեք ելք, դուրս գալու ենթաբաժինը եւ գործարկեք echo $ dog- ը կրկին կտեղադրվի maisie բառը:

Կարեւոր է նաեւ մտածել գլոբալ փոփոխականների վարքագծի մասին:

Սկսեք նոր տերմինալային պատուհանում եւ մուտքագրեք հետեւյալը.

արտահանման շունը = maisie
echo $ dog

Ինչպես սպասում եք, maisie բառը ցուցադրվում է: Այժմ բացեք ենթավերնագիր եւ կրկին echo $ dog ը: Այս անգամ կտեսնեք, որ maisie բառը դրսեւորվում է, թեեւ դուք գտնվում եք ենթաբաժնում:

Պատճառը դրա պատճառն այն է, որ արտահանման հրամանատարությունը կատարել է $ dog փոփոխական գլոբալ: Փոխարինելով $ dog փոփոխական ենթավերնագրի մեջ, նույնիսկ եթե դուք օգտագործում եք արտահանման հրամանը, չի ազդում իր ծնողների վրա:

Հուսով եմ, որ դրանից սկսած դուք կարող եք տեսնել, որ սքանչելի գրելու ժամանակ որոշակի նշանակություն ունի աշխատելու համար:

Այն օրինակները, որոնք ես տվել եմ, շատ պարզունակ է, բայց դա բավականին տարածված է մեկ շերտային սցենարի համար, որը կոչվում է մեկ այլ shell script, որն էլ իր հերթին կոչ է անում այլ շերտերի սցենար, որոնց բոլորը այժմ աշխատում են տարբեր մակարդակներում: Իմանալով շերտերի մակարդակը, կարող է շատ կարեւոր լինել: