Кантип жана эмне үчүн колдонгон $ SHLVL Өзгөрмө

$ SHLVL өзгөрмөлүү терең Сен канча снаряд, силерге чындыкты айтып коёюн үчүн колдонулат. Эгер сиз бул жерде адашып, анда башынан баштап кетүү керек.

А Shell деген эмне?

А номиналдык буйрук алат жана жүзөгө ашыруу үчүн негизги аракеттер системасын алып берет. көпчүлүк Linux системасы боюнча номиналдык программасы BASH деп аталат (Борн кайрадан Shell), ал эми C Shell (tcsh) жана Кот катмарда (КШ) жана башкалар, алардын ичинде колдо бар.

Кантип колдонсо болот Linux Shell

Жалпысынан колдонуучу катары сиз пайдалануу аркылуу кабыгы программасы менен өз ара терминалын Emulation программасы сыяктуу XTerm эле койбойлубу, же болбоду терминал.

Сиз Openbox сыяктуу терезелер менеджери же андай иштетүүсүн же KDE катары рабочий шарттарды иштеп жаткан болсо, айыкпас Китч же меню же сызыкча чейин болот. көп системалар жөнүндө жарлык CTRL ALT жана T ошондой эле терминалдык терезе ачылат.

Же болбосо сен буйрук сап кабыгына түздөн-түз жетүүнү камсыз дагы Телетайп (терүүсү) которула аласыз. Сиз CTRL ALT басуу жана F1 же CTRL ALT жана F2 ж.б. бул эмне кыла алат

Эмне бир Shell Даража

Эгер бир орбитада бир команданы аткаруу качан номиналдык деңгээл деп аталган бир нерсе боюнча өтөт. бир кыртыш ичинде сен бир subshell же аны ачып номиналдык турган дагы бир жер кыртышын ачуу болот.

Ошондуктан ата-эне кабыгы, балким, деңгээл 1 кабыгы жана бала кабыгы бир деңгээл 2-катмар болуп эсептелет.

Кантип көрүш үчүн Shell Көлөмүн

Бул жолу силер $ SHLVL өзгөрмө барбы колдонуу менен иштеп жаткан номиналдык көлөмү айта алат макаланын аталышы боюнча эч кандай күтүлбөгөн керек.

Төмөнкү учурда түрү чуркап жатат номиналдык көлөмүн көрүү үчүн:

Эхо $ SHLVL

Тескерисинче, кызыктай бир терминал терезенин ичинде жогорудагы буйрукка чуркап келсе, кайтып натыйжасы 2 экенин көрүп, сен күтпөгөндөй болушу мүмкүн.

Сиз Телетайп аркылуу ошол эле команданы аткаруу болсо, анда натыйжасы болуп саналат 1.

Бул эмне үчүн сурап, иши? Ооба, сиз иштеп жаткан иш чөйрөсү бир орбитасынын үстүнө чуркап жатат. Бул номиналдык 2 башка бир катар башталышы эмес, деңгээл 1. Ар бир терминал терезе ошол рабочий чөйрөнү рабочий чөйрөнү ачып орбитада бир баланын болушу керек ичинде ачуу жана номиналдык даражасын мүмкүн болмок.

Телетайп бир рабочий чөйрөнү чуркап Ошондуктан жөн эле деңгээл 1 кабыгы эмес.

Subshells How To түзүү

снаряддар жана subshells түшүнүгүн сынап жагы төмөнкүчө чагылдырууга болот. Айыкпас терезе ачуу жана төмөнкү терүү:

Эхо $ SHLVL

Биз терминал терезеден билгендей минималдуу номиналдык көлөмү 2.

Азыр терминалы терезенин ичинде төмөнкү терүү:

Sh

өз алдынча Sh буйрук кайсы бир катмары же subshell ичинде номиналдык колдонуп демек өз ара кебетеси өтөт.

Эгерде сиз бул кайра терүү:

Эхо $ SHLVL

Сиз номиналдык көлөмү 3. коюлганын көрөбүз subshell ичинде Sh буйрук Running subshell бир subshell ачат жана номиналдык көлөмү деъгээлинде калат 4.

Эмне үчүн Shell Даража маанилүү?

Сиздин скриптердин ичинде өзгөрмөлөр көлөмү тууралуу ойлонуп жатканда номиналдык көлөмү маанилүү.

жөнөкөй нерсе менен баштайлы:

ит = maisie
Эхо $ ит

Эгер катмары жогоруда буйругуна чуркап, анда сөз maisie терминалы терезеден көрсөтүлө турган.

Келгиле, жазуу менен жаңы жер кыртышын ачуу:

Sh

Бул буйрукту чуркап келсе, эч нерсе иш жүзүндө кайтып жатканын көрөт:

Эхо $ ит

Бул $ ит өзгөрүлмө номиналдык денгээлинде гана бар, себеби 2. subshell чыгуу үчүн чыгууга терип, дагы бир жолу сөз maisie кайрадан көрсөтүлө турган сезим $ ит чуркап келсе.

Ал ошондой эле бир орбитада глобалдык өзгөрүүлөрдүн жүрүм-туруму тууралуу ой жүгүртүү кандай гана маанилүү.

бир жаңы терминал терезеде өчүрүү башталат жана төмөнкүдөй түрү:

экспорттук ит = maisie
Эхо $ ит

Белгилүү болгондой сөз maisie көрсөтүлөт. Азыр subshell ачып, кайра кайталады $ ит түрү. Бул жолу силер сөз maisie сиз subshell бар да көрсөтүлөт экенин көрүшөт.

Мунун себеби экспорттук команда $ ит өзгөрүлмө глобалдуу кылып турат. Эгер экспорттук буйругун колдонуп болсо да, subshell ичинде $ ит өзгөрмө өзгөртүү жок, анын ата-орбиталар таасир берди.

Жазууда жазууда Балким бул сиз иштеген номиналдык денгээлин билип кээ бир мааниге ээ экенин көрүүгө болот.

мисалдар абдан жөнөкөй болуп берген, бирок бир номиналдык скрипт өз кезегинде алардын баары ар кандай денгээлдеги чуркап башка номиналдык скрипт деп атаган башка номиналдык арибин чакырып баардыгына маалым болуп калды. номиналдык көлөмүн билүү абдан маанилүү болушу мүмкүн.