uy - Windows
Linux ishlayotgan jarayonning barcha muhit o'zgaruvchilari. M. Garrels

Asl nusxasi: Linux asoslari
Muallif: Pol Kobbo
Nashr qilingan sana: 2014 yil 16 oktyabr
Tarjimasi: A. Panin
Tarjima sanasi: 2014 yil 13 dekabr

12-bob. Shell o'zgaruvchilari

Ushbu bobda biz buyruq qobig'i yordamida muhit o'zgaruvchilari bilan ishlashni o'rganamiz. Ushbu o'zgaruvchilar odatda ilovalarning ishlashi uchun talab qilinadi.

Dollar belgisi ($)

Qobiq tomonidan talqin qilinadigan yana bir muhim belgi bu dollar belgisidir. Buyruqlar qobig'i dollar belgisidan keyingi qatorga mos keladigan nomga ega muhit o'zgaruvchisini qidiradi va bu belgi va o'zgaruvchi nomini ushbu o'zgaruvchining qiymati bilan almashtiradi (yoki o'zgaruvchi mavjud bo'lmasa, hech narsa bilan).

Quyida $HOSTNAME, $USER, $UID, $SHELL va $HOME oʻzgaruvchilaridan foydalanishga misollar keltirilgan. $ echo Bu qobiq $SHELL Bu /bin/bash qobig'i $ echo Bu kompyuterda ishlatiladigan $SHELL qobig'i $HOSTNAME Bu kompyuterda ishlatiladigan /bin/bash qobig'i RHELv4u3.localdomain $ echo Foydalanuvchi identifikatori $USER $UID ga teng Foydalanuvchi identifikatori paul $500 ga teng echo Mening bosh katalogim $HOME Mening bosh katalogim /home/paul

Katta harf sezgirligi

Ushbu misol qobiq o'zgaruvchilari nomlari katta-kichik harflarga sezgir ekanligini ko'rsatadi! $ echo Salom $USER Salom paul $ echo Salom $user Salom

O'zgaruvchilar yaratish

Ushbu misol $MyVar o'zgaruvchisini yaratadi va keyin uning qiymatini o'rnatadi. Keyin misol yaratilgan o'zgaruvchining qiymatini tekshirish uchun echo buyrug'idan foydalanadi. $ MyVar=555 $ echo $MyVar 555 $

Iqtibos

E'tibor bering, qo'sh tirnoq buyruq satrida o'zgaruvchilarni kengaytirishga imkon beradi, bitta tirnoq esa bunday kengayishning oldini oladi. $ MyVar=555 $ echo $MyVar 555 $ echo "$MyVar" 555 $ echo "$MyVar" $MyVar

Bash qobig'i o'zgaruvchilarni ikki tirnoqli qatorlardagi qiymatlari bilan almashtiradi, lekin bitta tirnoqli satrlarda buni qilmaydi. paul@laika:~$ city=Burtonville paul@laika:~$ echo "Biz hozir $citydamiz." Hozir biz Burtonvil shahridamiz. paul@laika:~$ echo "Biz hozir $citydamiz." Biz hozir $citydamiz.

buyruqni o'rnatish

Atrof-muhit o'zgaruvchilari ro'yxati uchun set buyrug'idan foydalanishingiz mumkin. IN Ubuntu tizimlari va Debian set buyrug'i qobiq o'zgaruvchilari ro'yxatidan keyin qobiq funktsiyalarini ham ro'yxatga oladi. Shuning uchun, ushbu tizimlar bilan ishlashda muhit o'zgaruvchilari ro'yxatining barcha elementlari bilan tanishish uchun to'plamdan foydalanish tavsiya etiladi | Ko'proq.

bekor qilish buyrug'i

O'zgaruvchini qobiq muhitidan olib tashlash uchun unset buyrug'idan foydalanishingiz kerak. $ MyVar=8472 $ echo $MyVar 8472 $ sozlanmagan MyVar $ echo $MyVar $

Atrof-muhit o'zgaruvchisi $PS1

$PS1 muhit o'zgaruvchisi qobiq uchun salomlashish formatini o'rnatadi. Format satrini kiritishda foydalanuvchi nomi uchun \u yoki ishchi katalog uchun \w kabi maxsus belgilardan qochish uchun teskari chiziqdan foydalanishingiz mumkin. Bash shell man sahifasi taqdim etadi to'liq ro'yxat maxsus belgilar.

Quyidagi misolda biz $PS1 muhit o'zgaruvchisining qiymatini bir necha marta o'zgartiramiz. paul@deb503:~$ PS1=taklif taklifnomasiPS1="taklif" taklifi taklifi PS1="> " > > PS1="\u@\h$ " paul@deb503$ paul@deb503$ PS1="\u@\h :\W$" paul@deb503:~$

Muhim xatolarga yo'l qo'ymaslik uchun ko'rsatilgan qobiq so'rovlari uchun yashil rangdan foydalanishingiz mumkin oddiy foydalanuvchilar, va ildiz foydalanuvchiga ko'rsatiladigan qobiq so'rovlari uchun qizil. Oddiy foydalanuvchilarga ko'rsatiladigan takliflarda yashil rangdan foydalanish uchun .bashrc faylingizga quyidagi qatorlarni qo'shing. Paul RED="\[\033" WHITE="\[\033" GREEN="\[\033" BLUE="\[\033" eksport PS1="$(debian_chroot:+( $) tomonidan yaratilgan # rangli qobiq so'rovi debian_chroot))$GREEN\u$WHITE@$BLUE\h$WHITE\w\$ "

$PATH muhit o'zgaruvchisi

$PATH muhit o'zgaruvchisi kataloglarni o'rnatadi fayl tizimi, bunda qobiq buyruqlarni bajarish uchun zarur bo'lgan ikkilik fayllarni qidiradi (agar buyruq o'rnatilgan bo'lsa yoki buyruq taxallus bilan ifodalangan bo'lmasa). Ushbu o'zgaruvchi ikkita nuqta belgilari bilan ajratilgan katalog yo'llari ro'yxatini o'z ichiga oladi. [$ echo $PATH /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:

Buyruqlar qobig'i joriy katalogda bajariladigan ikkilik fayllarni qidirmaydi. (Joriy katalogdagi bajariladigan fayllarni qidirish funksiyasi PC-DOS bilan ishlaydigan kompyuterlarda saqlangan ma'lumotlarga ruxsatsiz kirishning eng oddiy mexanizmi edi). Agar siz qobiq joriy katalogdagi bajariladigan fayllarni qidirishini istasangiz, belgini qo'shishingiz kerak. qobiqning $PATH o'zgaruvchisining qiymati bo'lgan satr oxirigacha. $PATH=$PATH:. $ echo $PATH /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:. $

Agar siz su - buyrug'i o'rniga su buyrug'idan foydalansangiz, qobiqning $PATH o'zgaruvchisi qiymati boshqacha bo'lishi mumkin, chunki oxirgi buyruq maqsadli foydalanuvchining muhit o'zgaruvchisi qiymatlaridan qo'shimcha foydalanish imkonini beradi. Masalan, $PATH o'zgaruvchisi qiymati bilan ifodalangan ildiz foydalanuvchi uchun kataloglar ro'yxati odatda /sbin kataloglarini o'z ichiga oladi. $ su Parol: # echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin # exit $ su - Parol: # echo $PATH /usr/local/sbin:/usr/ local/bin:/sbin:/bin:/usr/sbin:/usr/bin: #

env buyrug'i

Env buyrug'i parametrlarsiz ishlatilsa, eksport qilinadigan muhit o'zgaruvchilari ro'yxatini ko'rsatadi. Ushbu buyruq va parametrlar bilan o'rnatish buyrug'i o'rtasidagi farq shundaki, set buyrug'i barcha muhit o'zgaruvchilari ro'yxatini beradi, shu jumladan bolalar qobiqlariga eksport qilinmagan o'zgaruvchilar.

Bundan tashqari, env buyrug'i "sof" qobiqni (hech qanday muhitni meros qilib olmasdan qobiq) ishga tushirish uchun ham ishlatilishi mumkin. env -i buyrug'i sizga bolalar qobig'ining muhitini tozalash imkonini beradi.

Qayta ko'rib chiqish orqali bu misol E'tibor bering, bash shell ishga tushganda $SHELL muhit o'zgaruvchisini o'rnatadi. $ bash -c "echo $SHELL $HOME $USER" /bin/bash /home/paul $ env -i bash -c "echo $SHELL $HOME $USER" /bin/bash $

Siz env buyrug'idan $LANG o'zgaruvchisi yoki bitta buyruq ichida bitta bash shell misolining boshqa muhit o'zgaruvchisi qiymatini belgilash uchun foydalanishingiz mumkin. Quyidagi misolda bu imkoniyat$LANG o'zgaruvchisi qiymatining fayl namunasini qidirish mexanizmining ishlashiga ta'sirini ko'rsatish uchun ishlatiladi (olish uchun Qo'shimcha ma'lumot O bu mexanizm Naqshlar yordamida fayllarni qidirish bo'limiga murojaat qilishingiz kerak). $ env LANG=C bash -c "ls File" Fileb Fileb $ env LANG=en_US.UTF-8 bash -c "ls File" Filea FileA Fileb FileB $

eksport buyrug'i

Eksport buyrug'i yordamida qobiq o'zgaruvchilarini boshqa qobiqlarga eksport qilishingiz mumkin. Quyidagi misolda ushbu buyruq muhit o'zgaruvchisini pastki qobiqlarga eksport qiladi. $ var3=uch $ var4=toʻrt $ eksport var4 $ echo $var3 $var4 uch toʻrt $ bash $ echo $var3 $var4 toʻrt

Biroq, bu buyruq yordamida o'zgaruvchi asosiy buyruq qobig'iga eksport qilinmaydi (oldingi misol quyida davom ettiriladi). $ eksport var5=besh $ echo $var3 $var4 $var5 toʻrt besh $ chiqish chiqish $ echo $var3 $var4 $var5 uch toʻrt $

O'zgaruvchan chegaralanish

Hozirgacha biz bash qobig'i dollar belgisi bilan boshlangan va pastki chiziq bo'lmagan birinchi harf-raqamli belgi paydo bo'lguncha davom etadigan o'zgaruvchini izohlashini ko'rdik. Ba'zi hollarda bu xatti-harakatlar muammoli bo'lishi mumkin. Ushbu muammoni hal qilish uchun jingalak qavslar quyidagi misolda ko'rsatilgan tarzda ishlatilishi mumkin. $ prefiks=Super $ echo Salom $prefiksman va $prefiksgirl Salom va $ echo Salom $(prefiks)erka va $(prefiks) qiz Salom Supermen va Supergirl $

Bog'lanmagan o'zgaruvchilar

Quyidagi misol $MyVar o'zgaruvchisining qiymatini ko'rsatishga harakat qiladi, lekin o'zgaruvchi mavjud emasligi sababli muvaffaqiyatsiz. Odatiy bo'lib, agar o'zgaruvchi bog'lanmagan bo'lsa (u mavjud emas) qobiq hech narsani chop etmaydi. $ echo $MyVar$

Biroq, siz foydalanayotgan o'zgaruvchi mavjud bo'lmasa, xato yaratish uchun foydalanishingiz mumkin bo'lgan nomlar qobig'i varianti mavjud. paul@laika:~$ set -u paul@laika:~$ echo $Myvar bash: Myvar: bogʻlanmagan oʻzgaruvchi paul@laika:~$ set +u paul@laika:~$ echo $Myvar paul@laika:~$

Bash qobig'ida set -u buyrug'i set -o nounset buyrug'i bilan bir xil va shunga o'xshash, set +u buyrug'i set +o nounset buyrug'i bilan bir xil.

Amaliy: Shell o‘zgaruvchilari

2. Qiymati 42 ga teng bo‘lgan o‘zgaruvchan javob tuzing.

3. $LANG o'zgaruvchisi qiymatini $MyLANG o'zgaruvchisi qiymatiga ko'chiring.

4. Hozirda foydalanilayotgan qobiq o'zgaruvchilarni sanab o'ting.

5. Barcha eksport qilingan qobiq o'zgaruvchilari ro'yxati.

6. O'zgaruvchingiz haqidagi ma'lumotlar env va o'rnatish buyruqlarining chiqishida mavjudmi?

7. Javobingiz o'zgaruvchisini yo'q qiling.

8. Ikkita o‘zgaruvchi yarating va ulardan birini eksport qiling.

9. Eksport qilingan o'zgaruvchining qiymatini bolalar interaktiv buyruqlar qobig'ida chop eting.

10. O‘zgaruvchi yarating va unga “Dumb” qiymatini bering, so‘ngra xuddi shunday “do” qiymati bilan boshqa o‘zgaruvchi yarating. "Dambldor" so'zini chop etish uchun echo buyrug'i va ikkita yaratilgan o'zgaruvchidan foydalaning.

11. Bash shell man sahifasida teskari qiyshiq chiziqdan qochgan boshqaruv belgilar ro'yxatini toping. Qobiq salomlashuvida vaqtni ko'rsatish uchun PS1 o'zgaruvchisiga boshqaruv belgisini qo'shing.

Amaliyot uchun to'g'ri tartib: qobiq o'zgaruvchilari

1. Echo buyrug'idan foydalanib, "Salom" satrini, keyin ismingizdan keyin chop eting. (Bash shell o'zgaruvchisidan foydalaning!)

Linuxdagi muhit o'zgaruvchilari qobiq tomonidan aniqlangan va dasturlar tomonidan ish vaqtida ishlatiladigan maxsus o'zgaruvchilardir. Ular tizim va foydalanuvchi tomonidan belgilanishi mumkin. Tizim atrof-muhit o'zgaruvchilari Linux tizimlari tizim tomonidan belgilanadi va tizim darajasidagi dasturlar tomonidan qo'llaniladi.

Masalan, PWD buyrug'i oldingi ishchi katalogni saqlash uchun tizim o'zgaruvchisidan foydalanadi. Foydalanuvchi muhiti o'zgaruvchilari joriy qobiq uchun vaqtincha yoki doimiy ravishda foydalanuvchi tomonidan o'rnatiladi. Qobiq o'zgaruvchilarini qo'shish va o'chirishning butun kontseptsiyasi bir nechta fayllar, buyruqlar va turli qobiqlar atrofida aylanadi.

Kengroq qilib aytganda, muhit o'zgaruvchisi uch xil bo'lishi mumkin:

1. Mahalliy muhit o'zgaruvchilari

Bu o'zgaruvchilar faqat joriy seans uchun aniqlanadi. Ular seans tugagandan keyin butunlay o'chiriladi, xoh masofaviy kirish yoki terminal emulyatori. Ular hech qanday fayllarda saqlanmaydi, lekin maxsus buyruqlar yordamida yaratiladi va o'chiriladi.

2. Maxsus qobiq o'zgaruvchilari

Linux-dagi ushbu qobiq o'zgaruvchilari ma'lum bir foydalanuvchi uchun aniqlanadi va foydalanuvchi har safar mahalliy terminaldan foydalanganda yoki masofadan ulanganda yuklanadi. Bunday o'zgaruvchilar odatda konfiguratsiya fayllarida saqlanadi: .bashrc, .bash_profile, .bash_login, .profile yoki foydalanuvchi katalogida joylashgan boshqa fayllar.

3. Tizim muhiti o‘zgaruvchilari

Ushbu o'zgaruvchilar butun tizimda, barcha foydalanuvchilar uchun mavjud. Ular tizim ishga tushganda yuklanadi tizim fayllari konfiguratsiyalar: /etc/environment, /etc/profile, /etc/profile.d/ /etc/bash.bashrc.

Linux muhiti o'zgaruvchan konfiguratsiya fayllari

Bu erda biz butun tizim yoki ma'lum bir foydalanuvchi uchun muhit o'zgaruvchilarini sozlash uchun ishlatiladigan yuqorida sanab o'tilgan turli xil konfiguratsiya fayllarini tez ko'rib chiqamiz.

.bashrc

Bu foydalanuvchiga xos o'zgaruvchan fayl. Foydalanuvchi har safar terminal seansini yaratganda, ya'ni yangi terminal ochganda yuklanadi. Ushbu faylda yaratilgan barcha muhit o'zgaruvchilari har safar yangi terminal seansi boshlanganda kuchga kiradi.

.bash_profile

Ushbu o'zgaruvchilar har safar foydalanuvchi SSH orqali masofadan ulanganda kuchga kiradi. Agar ushbu fayl yo'q bo'lsa, tizim .bash_login yoki .profile ni qidiradi.

/etc/environment

Ushbu fayl tizim darajasida har qanday muhit o'zgaruvchilarini yaratish, tahrirlash va o'chirish uchun mo'ljallangan. Ushbu faylda yaratilgan muhit o'zgaruvchilari butun tizim uchun, har bir foydalanuvchi uchun va hatto masofadan ulanishda ham mavjud.

/etc/bash.bashrc

Tizim bashrc. Ushbu fayl har bir foydalanuvchi uchun, har safar u yangi terminal sessiyasini yaratganida bajariladi. Bu faqat mahalliy foydalanuvchilar uchun ishlaydi, Internet orqali ulanganda bunday o'zgaruvchilar ko'rinmaydi.

/etc/profile

Tizim fayl profili. Ushbu fayldagi barcha o'zgaruvchilar tizimdagi har qanday foydalanuvchi uchun faqat masofadan turib tizimga kirgan bo'lsa foydalanish mumkin. Ammo ular mahalliy terminal seansini yaratishda mavjud bo'lmaydi, ya'ni agar siz shunchaki terminalni ochsangiz.

Ushbu fayllar yordamida yaratilgan barcha Linux muhiti o'zgaruvchilari ularni o'sha yerdan o'chirish orqali olib tashlanishi mumkin. Faqat har bir o'zgartirishdan so'ng siz tizimdan chiqishingiz va qayta kirishingiz yoki ushbu buyruqni bajarishingiz kerak:

manba fayl nomi

Linuxda foydalanuvchi va tizim muhiti o'zgaruvchilarini qo'shish

Endi siz bir oz nazariyani bilganingizdan so'ng, amaliyotga o'tamiz. Linuxda mahalliy muhit o'zgaruvchilari quyidagi buyruqlar bilan yaratilishi mumkin:

var = qiymat
$ eksport var=qiymat

Bu o'zgaruvchilar faqat joriy terminal sessiyasi uchun mavjud bo'ladi.

Atrof-muhit o'zgaruvchilarini o'chirish uchun foydalanishingiz mumkin bo'lgan bir nechta buyruqlar mavjud:

1. Env dan foydalanish

Odatiy bo'lib, barcha o'rnatilgan muhit o'zgaruvchilarini ko'rish uchun env dan foydalanishingiz mumkin. Ammo -i opsiyasi bilan u barcha qobiq o'zgaruvchilarini vaqtincha o'chirish va buyruqni o'zgaruvchilarsiz bajarish imkonini beradi.

env -i buyrug'i

Var - bu buyruqqa o'tmoqchi bo'lgan har qanday o'zgaruvchi.

Ushbu buyruq hech qanday muhit o'zgaruvchilarisiz qobiqni ishga tushiradi:

Bunday muhitni ishga tushirgandan so'ng, hech qanday o'zgaruvchilar mavjud bo'lmaydi, lekin chiqqandan keyin hamma narsa o'z joyiga qaytadi.

2. Unset dan foydalanish

Bu Linux muhiti o'zgaruvchilarini olib tashlashning yana bir usuli. Unset oʻzgaruvchini joriy seans oxirigacha nomi boʻyicha olib tashlaydi:

o'zgaruvchi_nomini o'chirish

3. O'zgaruvchi qiymatini "" ga o'rnating.

Bu Linuxda muhit oʻzgaruvchilarini oʻchirishning eng oson yoʻli; oʻzgaruvchini boʻsh qilib qoʻyish orqali uni joriy seansning qolgan qismi uchun oʻchirib tashlaysiz.

Eslatma: Ushbu usullardan foydalanib, siz tizim yoki foydalanuvchi o'zgaruvchilari qiymatlarini o'zgartirishingiz mumkin, ammo ular faqat joriy sessiya uchun tegishli bo'ladi.

Foydalanuvchi va tizim muhiti o'zgaruvchilarini yaratish

Ushbu bo'limda biz tizim va foydalanuvchi o'zgaruvchilarini nafaqat joriy seans uchun, balki qayta ishga tushirilgandan keyin ham ta'sir qilish uchun qanday o'rnatish va o'chirishni ko'rib chiqamiz.

1. Linuxda mahalliy o'zgaruvchilarni o'rnating va o'chiring

Keling, mahalliy VAR o‘zgaruvchisini yaratamiz va uni istalgan qiymatga o‘rnatamiz, so‘ng uni o‘chirib, o‘chirilganligiga ishonch hosil qilamiz:

VAR1="Yo'qotilgan"
$ echo $VAR1
$VAR1 sozlanmagan
$ echo $VAR1

O'zgaruvchini yaratishning yana bir usuli - eksport buyrug'i. Bo'sh qiymat belgilash orqali uni olib tashlaymiz:

eksport VAR="Yo'qotilgan"
$ echo $VAR
$VAR=
$ echo $VAR

Endi VAR2 o'zgaruvchisini yaratamiz va unga qiymat beramiz. Va keyin env -i ni ishga tushirish orqali barcha mahalliy o'zgaruvchilarni vaqtincha olib tashlang. U hech qanday o'zgaruvchisiz qobiqni boshlaydi. Chiqish kiritilgandan so'ng barcha o'zgaruvchilar tiklanadi.

VAR2="Yo'qotilgan"
$ echo $VAR2
$ env -i bash
$ echo $VAR2

Foydalanuvchi o'zgaruvchilarini o'rnatish va o'chirish

Kerakli o'zgaruvchini eksport qilish uchun eksport buyrug'ini qo'shish orqali uy katalogingizdagi .bashrc faylini tahrirlang. Keyin o'zgarishlarni qo'llash uchun manba buyrug'ini ishga tushiring. Masalan, CD o'zgaruvchisini yaratamiz:

Ushbu qatorni qo'shing (o, keyin joylashtiring, keyin Esc va :wq):

eksport CD = "Bu uy yo'qolgan"

Endi konfiguratsiyani yangilash qoladi:

source.bashrc
$echo $CD

Ushbu o'zgaruvchini o'chirish uchun uni .bashrc dan olib tashlang.

Endi .bash_profile yordamida muhit o'zgaruvchisini qo'shamiz. Ushbu o'zgaruvchi, siz allaqachon bilganingizdek, faqat masofaviy tizimga kirishda mavjud bo'ladi:

vi .bash_profile

qatorni qo'shing:

eksport VAR2="Bu uy yo'qolgan"

Va o'zgarishlarni qo'llash uchun ushbu buyruqlarni bajaring va o'zgaruvchi qo'shilganligini tekshiring:

source.bash_profile
$ echo $VAR2

O'zgaruvchi mavjud emas, chunki siz mahalliy terminal seansini yaratdingiz, endi ssh orqali ulaning:

ssh user@localhost
$ echo $VAR2

Ushbu muhit o'zgaruvchisini fayldan o'chirish orqali oldingi holatda bo'lgani kabi o'chirishingiz mumkin.

Izoh: Bu o'zgaruvchilar har doim mavjud, lekin hamma foydalanuvchilar uchun emas.

Tizim muhiti o'zgaruvchilarini o'rnatish va o'chirish

Keling, barcha foydalanuvchilar uchun mavjud bo'lgan o'zgaruvchini yarataylik terminal seanslari, o'chirilganlardan tashqari, uni /etc/bash.profile ga qo'shish orqali:

vi /etc/bash.profile

eksport VAR = "Bu butun tizim o'zgaruvchisi"

Keyin biz yangilaymiz:

manba /etc/bash.bashrc

Endi bu o'zgaruvchi barcha foydalanuvchilar uchun barcha terminallarda mavjud:

echo $VAR
$sudo su
$ echo $VAR
$su -
$ echo $VAR

Agar siz atrof-muhit o'zgaruvchisini ushbu mashinaga masofadan ulangan barcha foydalanuvchilar uchun ochiq qilishni istasangiz, /etc/profile faylini tahrirlang:

eksport VAR1="Bu butun tizim o'zgaruvchisi faqat masofaviy seanslar uchun"

Konfiguratsiyani yangilang va o'zgaruvchining mavjudligini tekshiring, u faqat masofadan turib mavjud bo'ladi:

manba /etc/profile
$ echo $VAR1

Agar siz Linuxda muhit oʻzgaruvchisini qoʻshishingiz kerak boʻlsa, unga masofadan turib ham, mahalliy seanslar uchun ham kirish mumkin boʻlsa, uni /etc/environmentga eksport qiling:

vi /etc/environment

eksport VAR12="Men hamma joyda mavjudman"

Biz tekshiramiz:

manba /etc/environment
$ echo $ VAR12
$sudo su
$ echo $ VAR12
$ chiqish
$ssh localhost
$ echo $ VAR12

Qobiqdagi parametr tushunchasi bash an'anaviy dasturlash tillaridagi o'zgaruvchi tushunchasiga o'xshash. Parametr nomi (yoki identifikator) alifbo belgilaridan, raqamlardan va pastki chiziqdan (faqat so'zning birinchi belgisi raqam bo'lishi mumkin emas), raqamdan yoki quyidagi maxsus belgilardan biridan iborat so'z bo'lishi mumkin: * , @ , # , ? , - (defis), $ , ! , 0 , _ (tagini chizish).

Parametr, agar unga qiymat berilgan bo'lsa, o'rnatilgan yoki o'rnatilgan deyiladi. Qiymat bo'sh satr ham bo'lishi mumkin. Parametrning qiymatini ko'rsatish uchun belgidan foydalaning $ uning nomidan oldin. Ha, jamoa

$ echo nomi

so'zni ekranda ko'rsatadi nomi, va jamoa

$echo $ism

nom o'zgaruvchisining qiymatini qaytaradi (agar biri o'rnatilgan bo'lsa, albatta).

5.6.1 Parametrlarning xilma-xilligi

Parametrlar uchta sinfga bo'linadi: pozitsion parametrlar, maxsus parametrlar(ismlari hozirgina sanab o'tilgan maxsus belgilar) va qobiq o'zgaruvchilari.

Ismlar (identifikatorlar) pozitsion parametrlar bir yoki bir nechta raqamdan iborat (bitta nol emas). Pozitsion parametr qiymatlari qobiq boshlanganda berilgan argumentlardir (birinchi argument 1-pozitsion parametrning qiymati va boshqalar). O'rnatilgan buyruq yordamida pozitsion parametrning qiymatini o'zgartirishingiz mumkin o'rnatish. Ushbu parametrlarning qiymatlari qobiq funktsiyalardan birini bajarayotganda ham o'zgaradi (bu haqda quyida muhokama qilinadi. Bo'lim 5.8).

Maxsus parametrlar almashtirish (almashtirish) quyidagicha amalga oshiriladigan naqshlardir.

5.2-jadval. Maxsus parametrlar.

Parametr

O'zgartirish qoidalari

Birinchisidan boshlab pozitsion parametrlar bilan almashtirildi. Agar almashtirish qo'sh tirnoq ichida amalga oshirilsa, u holda bu parametr maxsus IFS o'zgaruvchisining birinchi belgisi bilan ajratilgan barcha pozitsion parametrlardan tashkil topgan bitta so'z bilan almashtiriladi (quyida muhokama qilinadi). Ya'ni, ``$*"" ``$1c$2c..." ga ekvivalent, bunda c IFS o'zgaruvchisi qiymatidagi birinchi belgidir. Agar IFS bo'sh qilib o'rnatilgan bo'lsa yoki qiymat o'rnatilmagan bo'lsa, parametrlar bo'sh joylar bilan ajratiladi

Birinchisidan boshlab pozitsion parametrlar bilan almashtirildi. Agar almashtirish qo'sh tirnoq ichida amalga oshirilsa, har bir parametr alohida so'z bilan almashtiriladi. Shunday qilib, `` $@"" ""$1"" ""$2"" ga ekvivalentdir ... Agar pozitsion parametrlar bo'lmasa, hech qanday qiymat berilmaydi (@ parametri shunchaki olib tashlanadi)

Pozitsion parametrlar sonining kasr qiymati bilan almashtiriladi

Ishlayotgan oxirgi oldingi dastur kanalining chiqish holati bilan almashtirildi

(defis)

O'rnatilgan buyruq yordamida o'rnatilgan bayroq qiymatlarining joriy to'plami bilan almashtirildi o'rnatish yoki qobiqning o'zini ishga tushirganda

Qobiqning jarayon identifikatori (P ID) bilan almashtirildi

Eng so'nggi bajarilgan fon (asinxron bajarilgan) buyrug'ining jarayon identifikatori (P ID) bilan almashtirildi

Ishlash uchun qobiq yoki skript nomi bilan almashtiriladi. Agar bash ommaviy ish faylini bajarish uchun ishlaydi, $0 - fayl nomi. Aks holda, bu qiymat qobiqning to'liq yo'liga teng bo'ladi

(tagini chizish)

Oldingi bajarilgan buyruqning oxirgi argumenti bilan almashtiriladi (agar bu parametr yoki o'zgaruvchi bo'lsa, uning qiymati almashtiriladi)

Yuqoridagi jadvalda keltirilgan maxsus parametrlar faqat havola qilish mumkinligi bilan farqlanadi; Siz ularga qiymat bera olmaysiz.

O'zgaruvchan qobiq nuqtai nazaridan, bu nom bilan ko'rsatilgan parametrdir. O'zgaruvchilarga qiymatlar quyidagi operator yordamida tayinlanadi:

$name=qiymat

Qayerda nomi o'zgaruvchining nomi, va qiymat— unga tayinlangan qiymat (boʻsh satr boʻlishi mumkin). O'zgaruvchining nomi faqat raqamlar va harflardan iborat bo'lishi mumkin va raqam bilan boshlanmaydi. Qiymat har qanday matn bo'lishi mumkin. Agar qiymat maxsus belgilarni o'z ichiga olsa, u qo'shtirnoq ichiga olinishi kerak. Belgilangan qiymat bu tirnoqlarni o'z ichiga olmaydi, albatta. Agar o'zgaruvchi o'rnatilgan bo'lsa, uni qobiq qurilgan buyrug'i yordamida olib tashlash mumkin sozlanmagan.

Belgilangan qiymatlari bilan barcha o'rnatilgan qobiq o'zgaruvchilari to'plami atrof-muhit yoki qobiq muhiti deb ataladi. Siz uni buyruq yordamida ko'rishingiz mumkin o'rnatish parametrlarsiz (ehtimol, siz quvur liniyasini tashkil qilishingiz kerak "to'siq | kamroq"). Bu buyruqning chiqishi alifbo tartibida barcha muhit o'zgaruvchilari ro'yxatini beradi.Bir ma'lum o'zgaruvchining qiymatini ko'rish uchun buyruq o'rniga siz mumkin. o'rnatish(uning chiqishida siz hali ham kerakli o'zgaruvchini qidirishingiz va qidirishingiz mumkin) siz buyruqdan foydalanishingiz mumkin

$echo $ism

(ammo, bu holda siz qiziqqan o'zgaruvchining nomini bilishingiz kerak).

O'zgaruvchilar orasida siz buyruq chiqishida ko'rasiz o'rnatish, ba'zi juda qiziqarli o'zgaruvchilar mavjud. Masalan, RANDOM o'zgaruvchisiga e'tibor bering. Agar siz buyruqni ketma-ket bir necha marta bajarsangiz

$ echo $RANDOM

har safar yangi qiymatga ega bo'lasiz. Gap shundaki, bu o'zgaruvchi 0 - 32,768 oralig'idan tasodifiy butun sonni qaytaradi.

5.6.2 Shell takliflari

Juda muhim o'zgaruvchilardan biri nomga ega PS1. Bu o'zgaruvchi taklif turini belgilaydi bash U keyingi buyruqni foydalanuvchi tomonidan kiritilishini kutayotganda chiqadi. Odatiy bo'lib, bu o'zgaruvchi "\s-\v\$" ga o'rnatiladi. Aslida ichida bash Turli vaziyatlarda qo'llaniladigan to'rtta taklifnoma mavjud. O'zgaruvchan PS1 qobiq buyruqni kiritishni kutayotganda chiqariladigan so'rov turini belgilaydi. Oʻzgaruvchi tomonidan belgilangan ikkilamchi soʻrov PS2, qobiq foydalanuvchidan ishlaydigan buyruq yoki dasturni davom ettirish uchun zarur bo'lgan qo'shimcha ma'lumotlarni kiritishini kutayotganda paydo bo'ladi. Standart oʻzgaruvchi PS2 ma'nosi bor" >" . Buyruqni ishga tushirganingizda bu so'rovni allaqachon ko'rgan bo'lishingiz mumkin mushuk klaviaturadan faylga ma'lumotlarni kiritish uchun. Yana bir misol buyruq ftp, ishga tushirilgandan so'ng taklifnoma ham ushbu shaklni oladi.

O'zgaruvchan so'rov PS3, buyruqda ishlatiladi tanlang. O'zgaruvchan so'rov PS4, vaqtda har bir buyruq oldidan chop etiladi bash bajarilishining borishini nazorat qiladi. Standart qiymat " + ".

Agar xohlasangiz, o'zgaruvchilar turini o'zgartirishingiz mumkin PS1 Va PS2. Bunday holda, siz klaviaturadan kiritilgan har qanday belgilardan, shuningdek, taklif qatorini yaratishda Jadvalga muvofiq dekodlangan ma'lum miqdordagi maxsus belgilardan foydalanishingiz mumkin. 5.3 (biz ulardan faqat ba'zilarini sanab o'tamiz, masalan; to'liq ro'yxat uchun yordamchi dasturning man sahifasiga qarang. bash) .

5.3-jadval. Maxsus belgilar taklifnoma yaratish uchun

Belgi

Uning ma'nosi

Ovozli signal (ASCII kodi 07)

"Kun, oy, kun" formatidagi sana, masalan, chorshanba, 17 oktyabr.

Birinchi nuqtagacha xost nomi

Toʻliq xost nomi

Joriy vaqt 24 soatlik formatda: HH: MM: SS (soat: daqiqa: soniya)

12 soatlik formatdagi joriy vaqt: HH:MM:SS

Joriy vaqt 12 soatlik formatda am/pm

Shellni ishga tushirgan foydalanuvchi nomi

Joriy ishchi katalogning to'liq nomi (ildizdan boshlab)

Joriy ishchi katalog (yo'l ko'rsatilmagan)

Agar qobiq superuser sifatida ishlayotgan bo'lsa, # belgisi va belgi $ , agar qobiq oddiy foydalanuvchi tomonidan boshlangan bo'lsa.

\nnn

Sakkizlik kodli belgi nnn

Yangi qator (satr tasmasi)

Qobiq nomi

Hozirgi jamoa raqami

Teskari chiziq

Chop etmaydigan belgilar ketma-ketligining boshlanishi (bu belgidan maslahat matniga terminal boshqaruvi belgilar ketma-ketligini kiritish uchun foydalanish mumkin)

Bosib bo'lmaydigan belgilar ketma-ketligining oxiri

Buyruqlar tarixida ushbu buyruqning seriya raqami

Joriy buyruq raqami (joriy seansda bajarilayotgan buyruqning seriya raqami) buyruqlar tarixi ro'yxatidagi ushbu buyruqning raqamidan farq qilishi mumkin, chunki ikkinchisi buyruqlar tarixi faylida saqlangan buyruqlarni o'z ichiga oladi.

Ko'rsatmani belgilovchi o'zgaruvchining qiymati qobiq tomonidan o'qilgandan so'ng, parametrlarni kengaytirish, buyruq nomlari va arifmetik ifodalarda almashtirish va so'zlarni bo'lish qoidalariga muvofiq almashtirishlar amalga oshirilishi mumkin. Ushbu qoidalar quyida, bo'limda muhokama qilinadi. 5.7.

Masalan, buyruqni bajargandan so'ng (satrda bo'sh joy mavjud bo'lganligi sababli, tirnoq talab qilinadi)

# PS1="[\u@\h \W]\$"

standart so'rov kvadrat qavs, foydalanuvchi nomi, belgini ko'rsatadi @ , kompyuter nomi, bo'sh joy, joriy katalog nomi (yo'lsiz), yopish kvadrat qavs va belgi $ (agar oddiy foydalanuvchi qobiqda ishlayotgan bo'lsa) yoki # (agar qobiq ildiz sifatida ishlayotgan bo'lsa).

5.6.3 O'zgaruvchan YO'L

Yana bir muhim o'zgaruvchining nomi bor YO'L. U joylashgan kataloglarga yo'llar ro'yxatini belgilaydi bash buyruq satrida faylga toʻliq yoʻl koʻrsatilmagan hollarda fayllarni (xususan, buyruqli fayllarni) qidiradi. Ushbu ro'yxatdagi alohida kataloglar ikki nuqta bilan ajratilgan. Standart oʻzgaruvchi YO'L kataloglarni o'z ichiga oladi /usr/local/bin, /bin, /usr/bin, /usr/X11R6/bin, ya'ni shunday ko'rinadi:

/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:

Ushbu ro'yxatga katalog qo'shish uchun siz quyidagi buyruqni bajarishingiz kerak:

# PATH=$PATH:yangi_yoʻl.

Qidiruvni amalga oshirayotganda, qobiq kataloglarni PATH o'zgaruvchisida ro'yxatga olingan tartibda qidiradi.

PATH o'zgaruvchisiga nuqta qo'shish orqali joriy katalogni ushbu ro'yxatga kiritishingiz mumkinligini unutmang. Biroq, bu xavfsizlik nuqtai nazaridan tavsiya etilmaydi: tajovuzkor nomi superfoydalanuvchi tomonidan tez-tez bajariladigan buyruqlardan biriga mos keladigan buyruqni umumiy katalogga qo'yishi mumkin, lekin butunlay boshqacha harakatlarni amalga oshiradi (ayniqsa, joriy katalog katalogning boshida bo'lsa). qidiruv yo'llari ro'yxati).

5.6.4 O'zgaruvchan IFS

Ushbu o'zgaruvchi konvertatsiya paytida so'zni bo'lish operatsiyasida ishlatiladigan ichki maydonni ajratuvchini belgilaydi. buyruq qatori, bajarish uchun buyruq qatorini ishga tushirishdan oldin qobiq tomonidan bajarilgan. Ushbu o'zgaruvchining standart qiymati "<Пробел><Символ_ новой_ строки>".

5.6.5 Joriy va uy kataloglari

Joriy katalog nomi muhit o'zgaruvchisida (PWD nomi bilan) saqlanadi va bu o'zgaruvchining qiymati dastur har safar ishga tushirilganda o'zgaradi. CD(shuningdek, joriy katalogni boshqa yo'l bilan o'zgartirganda, masalan, Midnight Commander orqali).

Xuddi shu tarzda to'liq ism Ushbu jarayonni ishga tushirgan foydalanuvchining uy katalogi (yo'lni ko'rsatgan holda) HOME o'zgaruvchisida saqlanadi.

5.6.6 Jamoa eksport

Qobiq dastur yoki buyruqni ishga tushirganda, ularga ba'zi muhit o'zgaruvchilarini uzatadi. Muhit o'zgaruvchisi qobiqdan ishga tushirilgan jarayonga o'tishi uchun uni maxsus buyruq yordamida sozlash kerak. eksport, ya'ni o'rniga

$name=qiymat

yozish kerak

$eksport nomi=qiymat

Bunday holda, qobiqdan ishga tushirilgan barcha dasturlar (shu jumladan, qobiqning ikkinchi darajali misollari) shu tarzda aniqlangan o'zgaruvchilarga kirish huquqiga ega bo'ladi, ya'ni ular o'z qiymatlarini nom bilan chaqirishlari mumkin.

V. Kostromin (kos at rus-linux dot net) - 5,6. Parametrlar va o'zgaruvchilar. Qobiq muhiti

Nomlangan va kamida bitta, odatda bir nechta ilovalar tomonidan ishlatiladigan ma'lumotlarni o'z ichiga olgan ob'ektlar muhit o'zgaruvchilari deb ataladi. Oddiy so'zlar bilan aytganda, muhit o'zgaruvchisi nomi va qiymati bo'lgan o'zgaruvchidan boshqa narsa emas.

Atrof-muhit o'zgaruvchisi qiymatlari tizimda bajarilishi mumkin bo'lgan barcha fayllarning joylashuvi yoki tizim uchun mahalliy sozlamalar kabi standart tahrirlovchi bo'lishi mumkin. Yangi boshlanuvchilar uchun bu biroz qiyin, ammo muhit o'zgaruvchisi - bu ajoyib usul almashish bir nechta ilovalar va jarayonlar o'rtasidagi konfiguratsiya sozlamalari.

Coreutils paketi env va printenv dasturlarini o'z ichiga oladi. Hozirda qiymatga ega bo'lgan barcha muhit o'zgaruvchilari ro'yxatini kiritish uchun shunchaki yozing:

$printenv

Bash qobig'ida ikki xil muhit o'zgaruvchilari mavjud:

  • Global o'zgaruvchilar
  • Mahalliy o'zgaruvchilar

Global muhit o'zgaruvchilari

Shell seansidan global muhit o'zgaruvchilari va qobiq yaratadigan har qanday bola jarayonlari ko'rsatiladi.

Boshqa tomondan, mahalliy o'zgaruvchilarga faqat ular yaratilganda qobiq orqali kirish mumkin. Bu global muhit o'zgaruvchilarini ota-ona jarayonidan ma'lumot talab qiladigan va bolalar jarayonlarini tug'diradigan ilovalarda foydali qiladi.

Odatiy bo'lib, Linux tizimi bash seansini boshlashda ma'lum global muhit o'zgaruvchilarini o'rnatadi. Tizim muhiti o'zgaruvchilari ularni oddiy foydalanuvchi muhiti o'zgaruvchilaridan farqlash uchun har safar barcha bosh harflardan foydalanadi.

Mahalliy muhit o'zgaruvchilari

Chunki ularning nomi mahalliy muhit o'zgaruvchilari faqat ular aniqlangan mahalliy jarayonda ko'rinishi mumkinligini ko'rsatadi. Mahalliy muhit o'zgaruvchilari haqida chalkashmang, ular global muhit o'zgaruvchilari kabi bir xil darajada muhimdir. Aslida, Linux tizimi sukut bo'yicha siz uchun standart mahalliy muhit o'zgaruvchilarini ham belgilaydi. Mahalliy muhit o'zgaruvchilari ro'yxatini ko'rishga harakat qilganingizda, bu qiyin bo'ladi. Afsuski, biz uchun faqat mahalliy muhit o'zgaruvchilarini ko'rsatadigan buyruq yo'q. Muayyan jarayon uchun o'rnatilgan barcha muhit o'zgaruvchilarini ko'rsatadigan buyruq mavjud. E'tibor bering, bunga global muhit o'zgaruvchilari ham kiradi.

Atrof-muhit o'zgaruvchilarini o'rnatish

Siz o'zingizning muhit o'zgaruvchilaringizni to'g'ridan-to'g'ri bash qobig'idan yaratishingiz mumkin. Keyingi bo'limda biz sizga o'zingizning muhit o'zgaruvchilaringizni qanday yaratishni va ularga interaktiv qobiq yoki qobiq dasturingizdan havola qilishni ko'rsatamiz.

Mahalliy muhit o'zgaruvchilarini o'rnatish

Bash qobig'i ishga tushirilgandan so'ng (yoki qobiq skripti paydo bo'ldi), sizga qobiq jarayonida ko'rinadigan mahalliy o'zgaruvchilarni yaratishga ruxsat beriladi. Oʻzgaruvchining qiymatini belgilaydigan tenglik belgisidan foydalanib, satr yoki raqamli oʻzgaruvchiga muhit oʻzgaruvchisini belgilashingiz mumkin:

$ andreyex_test=test qilinmoqda $ echo $andreyex_test sinovi $

Tabriklaymiz, siz hozirgina birinchi o'zgaruvchingizni yaratdingiz. Esda tutingki, har qanday vaqtda andreyex_test muhit o'zgaruvchisining qiymatiga murojaat qilishingiz kerak bo'lsa, faqat $andreyex_test nomi bilan murojaat qiling.

Agar siz bo'shliqlarni o'z ichiga olgan qiymatlar qatorini belgilashingiz kerak bo'lsa, satrning boshi va oxirini ko'rsatish uchun bitta tirnoqdan foydalanishingiz kerak bo'ladi:

$ andreyex_test=uzun qatorni sinab ko'rish -bash: a: buyrug'i topilmadi$ andreyex_test="uzun qatorni sinab ko'rish" $ echo $andreyex_test uzun qatorni sinab ko'rmoqda

Agar bitta qo'shtirnoqsiz qoldirilgan bo'lsa, bash qobig'i keyingi belgi qayta ishlash uchun boshqa buyruq deb hisoblaydi.

E'tibor bering, biz belgilagan mahalliy muhit o'zgaruvchisi uchun biz barcha kichik harflardan foydalanganmiz, biz hozirgacha ko'rgan tizim muhiti o'zgaruvchilari barcha katta harflardan foydalangan.

Bash qobig'ida bu standart konventsiyadir. Agar siz yangi muhit o'zgaruvchilarini o'rnatayotgan bo'lsangiz, bu shart emas, lekin kichik harflar tavsiya etiladi. Bu sizning shaxsiy muhit o'zgaruvchilaringizni tizim muhiti o'zgaruvchilari natijalaridan farqlashga yordam beradi.

ESLATMA: Muhit o'zgaruvchisi nomi, tenglik belgisi va qiymat o'rtasida bo'sh joy bo'lmasligi juda muhim. Agar topshiriqda bo'sh joy qo'ysangiz, bash qobig'i qiymatni alohida buyruq sifatida izohlaydi:

$ andreyex_test2 = test -bash: andreyex_test2: $ buyrug'i topilmadi

Shell jarayonidagi mahalliy muhit o'zgaruvchisi qobiq jarayonining istalgan joyida foydalanish uchun mavjud bo'ladi. Ammo agar siz boshqa qobiq yaratsangiz, u bolalar qobig'ida mavjud emas:

$ bash $ echo $andreyex_test $ exit exit $ echo $andreyex_test uzun satrni sinab ko'rmoqda $

Bu holatda biz bolalar qobig'ini boshladik. Ko'rib turganingizdek, andreyex_test muhit o'zgaruvchisi bolalar qobig'ida mavjud emas (u bo'sh qiymatni o'z ichiga oladi). Biz bola qobig'ini tark etib, asl qobiqqa qaytganimizdan so'ng, mahalliy muhit o'zgaruvchisi hali ham mavjud edi.

Xuddi shunday, agar siz bola jarayonini tark etganingizdan so'ng, mahalliy muhit o'zgaruvchisini bola jarayonida o'rnatgan bo'lsangiz, mahalliy muhit o'zgaruvchisiga boshqa kirish imkoni bo'lmaydi:

$ bash $ andreyex_test=test qilinmoqda $ echo $andreyex_test sinovi $ chiqish chiqish $ echo $andreyex_test $

Bola qobig'ida o'rnatilgan andreyex_test muhit o'zgaruvchisi biz asosiy qobiqqa qaytganimizda mavjud emas.

Global muhit o'zgaruvchilarini o'rnatish

Global muhit o'zgaruvchilari global muhit o'zgaruvchisini o'rnatuvchi jarayon tomonidan yaratilgan bola jarayonining barcha jarayonlarida ko'rinadi. Global muhit o'zgaruvchisini yaratish uchun ishlatiladigan usul mahalliy muhit o'zgaruvchisini yaratish va keyin uni global muhitga eksport qilishdir.

Bu eksport buyrug'i yordamida amalga oshiriladi:

$ echo $andreyex_test uzun qatorni sinab ko'rmoqda $ eksport andreyex_test $ bash $ echo $andreyex_test uzun qatorni sinab ko'rmoqda $

Mahalliy muhit o'zgaruvchisi andreyex_testda eksport buyrug'ini ishlatganimizdan so'ng, biz boshladik yangi jarayon shell va andreyex_test muhit o'zgaruvchisining qiymatiga qaradi. Bu safar eksport buyrug'i global muhit o'zgaruvchisini global qildi, shuning uchun u o'z qiymatini saqlab qoldi.

Mahalliy muhit o'zgaruvchisida buyruq eksportini ishga tushirganingizda, o'zgaruvchi nomiga murojaat qilish uchun dollar belgisidan foydalanmasligingizni unutmang.

Atrof-muhit o'zgaruvchilarini olib tashlash

Shubhasiz, agar siz yangi muhit o'zgaruvchisini yarata olsangiz, mavjud muhit o'zgaruvchisini ham o'chirib tashlashingiz mantiqan to'g'ri keladi. Buni unset buyrug'i yordamida amalga oshirish mumkin:

$ echo $andreyex_test sinovi $ unset andreyex_test $ echo $andreyex_test $

Agar siz unset buyrug'idagi muhit o'zgaruvchisiga murojaat qilsangiz, dollar belgisini ishlatmaslikka ehtiyot bo'ling.

Global muhit o'zgaruvchilari bilan ishlashda ishlar biroz murakkablashadi. Agar siz bolalar jarayonida bo'lsangiz va global muhit o'zgaruvchisini o'chirib qo'ysangiz, u faqat bola jarayoniga tegishli. Global muhit o'zgaruvchisi asosiy jarayonda mavjud bo'lib qoladi:

$ andreyex_test=test qilinmoqda $ eksport andreyex_test $ bash $ echo $andreyex_test sinovi $ sozlanmagan andreyex_test $ echo $andreyex_test $ chiqish chiqish $ echo $andreyex_test sinovi $

Ushbu misolda biz andreyex_test deb nomlangan mahalliy muhit o'zgaruvchisini o'rnatamiz, keyin uni global muhit o'zgaruvchisiga aylantirish uchun eksport qilamiz. Keyin biz bolalar qobig'i jarayonini boshladik va global muhit o'zgaruvchisi andreyex_test hali ham mavjud ekanligiga ishonch hosil qilish uchun tekshirildik. Keyin, hali ham bolalar qobig'ida bo'lganimizda, biz andreyex_test global muhit o'zgaruvchisini o'chirish uchun unset buyrug'idan foydalandik va keyin bola qobiqdan chiqdik. Endi asl asosiy qobiqqa qaytsak, biz andreyex_test muhit o'zgaruvchisining qiymatini tekshirdik va u hali ham amal qiladi.

Standart Shell muhiti o'zgaruvchilari

Bash qobig'i tizim muhitini aniqlash uchun foydalanadigan maxsus muhit o'zgaruvchilari mavjud. Siz har doim ushbu o'zgaruvchilarni Linux tizimingizda ishlatish uchun hisoblashingiz mumkin. Bash qobig'i asl Unix Bourne qobig'ining hosilasi bo'lganligi sababli, u dastlab ushbu qobiqda aniqlangan muhit o'zgaruvchilarini ham o'z ichiga oladi.

Quyidagi misollar bash qobig'i tomonidan taqdim etilgan muhit o'zgaruvchilari original Unix Bourne qobig'iga mos kelishini ko'rsatadi.

Hozirgacha ushbu ro'yxatdagi eng qimmatli muhit o'zgaruvchisi PATH muhit o'zgaruvchisidir.

Qobiq buyruqlar qobig'iga (buyruqlar satri interfeysi) buyruq kiritganingizda, qobiq dasturni topish uchun tizimni qidirishi kerak. U buyruqlarni qidiradigan kataloglar PATH muhit o'zgaruvchisi tomonidan aniqlanadi. Linux tizimida PATH muhit o'zgaruvchisi quyidagicha ko'rinishi kerak:

$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin $

Bu holat qobiq buyruqlarni qidiradigan sakkizta katalog mavjudligini ko'rsatadi. Har bir katalog ikki nuqta bilan ajratilgan va PATH o'zgaruvchisi oxirida kataloglar ro'yxatining oxiri yo'q. Siz har doim yangi katalog qo'shish va boshqa ikki nuqta qo'shish orqali PATH ga qo'shimcha kataloglarni qo'shishingiz mumkin. PATH shuningdek, buyurtmalarni qidiradigan so'rovni ko'rsatadi.

Standart Bourne muhit o'zgaruvchilariga qo'shimcha ravishda, bash qobig'i ko'rsatilganidek, bir nechta o'zgaruvchilarni ham taqdim etadi:

Bash Shell Bourne o'zgaruvchilari:

CDPATH: CD buyrug'i uchun qidiruv yo'li sifatida foydalaniladigan kataloglarning ikki nuqta bilan ajratilgan ro'yxati.
HOME: Joriy foydalanuvchining uy katalogi.
IFS: matn satrlarini ajratish uchun qobiq tomonidan ishlatiladigan maydonlarni ajratuvchi belgilar ro'yxati.
MAIL: fayl nomi pochta qutisi joriy foydalanuvchi. Bash qobig'i ushbu faylni tekshiradi yangi pochta.
MAILPATH: Joriy foydalanuvchining pochta qutisi uchun bir nechta fayl nomlari ro'yxati. Bash qobig'i ushbu ro'yxatdagi har bir faylda yangi pochta mavjudligini tekshiradi.
OPTARG: getopts buyrug'i tomonidan qayta ishlangan oxirgi parametr argumentining qiymati.
OPTIND: getopts buyrug'i tomonidan qayta ishlangan oxirgi parametr argumentining indeks qiymati.
PATH: qobiq buyruqlarni qidiradigan kataloglarning ikki nuqta bilan ajratilgan ro'yxati.
PS1: Asosiy buyruq qatori qatori.
PS2: Ikkilamchi qobiq buyruq qatori interfeysi so'rov qatori.

Shell bash muhit o'zgaruvchilari:

BASH: Bash qobig'ining joriy nusxasini bajarish uchun to'liq malakali yo'l nomi.
BASH_ENV: O'rnatilganda, har bir bash skripti ishga tushirishdan oldin ushbu o'zgaruvchi tomonidan belgilangan ishga tushirish faylini ishga tushirishga harakat qiladi.
BASH_VERSION: joriy bash shell misolining versiya raqami.
BASH_VERSINFO: bash qobig'ining joriy nusxasining alohida asosiy va kichik versiya raqamlarini o'z ichiga olgan o'zgaruvchilar massivi.
USTUNLAR: Bash qobig'ining joriy nusxasi uchun ishlatiladigan terminal kengligini o'z ichiga oladi.
COMP_CWORD: Kursorning joriy holatini o'z ichiga olgan COMP_WORDS o'zgaruvchisi indeksi.
COMP_LINE: joriy buyruq qatori.
COMP_POINT: boshlang'ichga nisbatan joriy kursor pozitsiyasining indeksi hozirgi jamoa.
COMP_WORDS: Joriy buyruq satridagi alohida so'zlarni o'z ichiga olgan o'zgaruvchan massiv.
COMPREPLY: qobiq funktsiyasi tomonidan yaratilgan mumkin bo'lgan chiqish kodlarini o'z ichiga olgan o'zgaruvchan massiv.
DIRSTACK: Kataloglar stekining joriy mazmunini o'z ichiga olgan o'zgaruvchilar massivi.
EUID: joriy foydalanuvchining samarali foydalanuvchi identifikatori.
FCEDIT: fc buyrug'i tomonidan ishlatiladigan standart muharrir.
FIGNORE: Fayl nomini toʻldirishda eʼtiborga olinmaydigan qoʻshimchalarning ikki nuqta bilan ajratilgan roʻyxati.
FUNCNAME: Hozirda bajarilayotgan qobiq funksiyasining nomi.
GLOBIGNORE: Fayl nomini kengaytirishda e'tiborga olinmaydigan fayl nomlari to'plamini ko'rsatuvchi ikkita nuqta bilan ajratilgan naqshlar ro'yxati.
GROUPS: Joriy foydalanuvchi a'zosi bo'lgan guruhlar ro'yxatini o'z ichiga olgan o'zgaruvchilar massivi.
histchars: tarixni kengaytirishni boshqaradigan uchta belgigacha.
HISTCMD: joriy buyruqning tarix raqami.
HISTCONTROL: qobiq tarixi ro'yxatiga qaysi buyruqlar kiritilganligini boshqaradi.
HISTFILE: qobiq tarixi ro'yxatini saqlash uchun fayl nomi (standart - history.bash).
HISTFILESIZE: Tarix faylida saqlash uchun maksimal satrlar soni.
HISTIGNORE: Tarix fayli uchun qaysi buyruqlar e'tiborga olinmasligini aniqlash uchun ishlatiladigan naqshlarning ikki nuqta bilan ajratilgan ro'yxati.
HISTSIZE: Tarix faylida saqlanadigan buyruqlarning maksimal soni.
HOSTFILE: qobiq host nomini to'ldirishi kerak bo'lganda o'qilishi kerak bo'lgan fayl nomini o'z ichiga oladi.
HOSTNAME: Joriy xost nomi.
HOSTTYPE: ishlayotgan bash-shell mashinasini tavsiflovchi satr.
IGNOREEOF: Chiqishdan oldin qobiq olishi kerak bo'lgan ketma-ket EOF belgilar soni. Agar bu qiymat mavjud bo'lmasa, u birlamchi qiymatga ega bo'ladi.
INPUTRC: O'qish liniyasini ishga tushirish fayl nomi (standart .inputrc).
LANG: qobiq uchun mahalliy toifa.
LC_ALL: Mahalliy toifani belgilash uchun LANG o'zgaruvchisini bekor qiladi.
LC_COLLATE: satr qiymatlarini saralashda ishlatiladigan solishtirish tartibini o'rnatadi.
LC_CTYPE: Fayl nomini kengaytirish va naqsh moslashtirishda ishlatiladigan belgilar talqinini aniqlaydi.
LC_MESSAGES: Dollar belgisi oldidan ikki tirnoqli satrlarni talqin qilishda foydalaniladigan mahalliy sozlamani belgilaydi.
LC_NUMERIC: ko'rsatadi mahalliy sozlash, raqamlarni formatlash uchun ishlatiladi.
LINENO: bajarilayotgan skriptdagi satr raqami.
LINES: terminalda mavjud qatorlar sonini aniqlaydi.
MACHTYPE: cpu-company-tizim formatida tizim turini belgilovchi qator.
MAILCHECK: Yangi pochta uchun qobiq qanchalik tez-tez tekshirilishi kerak (standart 60 soniya).
OLDPWD: qobiqda ishlatilgan oldingi ishchi katalog.
OPTERR: Agar 1 ga o'rnatilgan bo'lsa, bash qobig'i getopts buyrug'i tomonidan yaratilgan xatolarni ko'rsatadi.
OSTYPE: satrni aniqlash operatsion tizim, unda qobiq ishlaydi.
PIPESTATUS: oldingi jarayonning jarayondan chiqish holati qiymatlari ro'yxatini o'z ichiga olgan o'zgaruvchan massiv.
POSIXLY_CORRECT: Agar o'rnatilgan bo'lsa, bash POSIX rejimida ishlaydi.
PPID: asosiy bash shell jarayonining jarayon identifikatori (PID).
PROMPT_COMMAND: Agar o'rnatilgan bo'lsa, dastlabki so'rovdan oldin bajarilishi kerak bo'lgan buyruq ko'rsatiladi.
PS3: tanlash buyrug'idan foydalanish taklifi.
PS4: Agar foydalanilgan bo'lsa, buyruq satri aks-sadolanishidan oldin ko'rsatiladigan maslahat bash parametri-x.
PWD: joriy ishchi katalog.
RANDOM: 0 va 32767 oralig'idagi tasodifiy sonni qaytaradi. Ushbu o'zgaruvchiga qiymat belgilash tasodifiy sonlar generatorini yaratadi.
JAVOB: O'qish buyrug'i uchun standart o'zgaruvchi.
SECONDS: qobiq boshlanganidan beri soniyalar soni. Qiymat belgilash taymerni qiymatga qaytaradi.
SHELLOPTS: yo'g'on nuqta bilan ajratilgan ruxsat etilgan bash shell variantlari ro'yxati.
SHLVL: Har safar yangi bash qobig'i ishga tushirilganda bittaga oshiriladigan qobiq darajasini belgilaydi.
TIMEFORMAT: qobiq vaqt qiymatlarini qanday ko'rsatishini aniqlaydigan format.
TMOUT: tanlash va o'qish buyruqlari kiritish uchun qancha vaqt kutishi kerakligi (soniyalarda) qiymati. Standart nol qiymati cheksiz kutishni anglatadi.
UID: joriy foydalanuvchining haqiqiy foydalanuvchi identifikatori.

Siz o'rnatish buyrug'ini ishlatganingizdan so'ng, barcha standart muhit o'zgaruvchilari ko'rsatilmasligini sezishingiz mumkin. Buning tushuntirishi shundan iboratki, ular standart muhit o'zgaruvchilari bo'lsa-da, ularning barchasida qiymat bo'lishi shart emas.

Xulosa

Ushbu qo'llanmada biz Linux muhit o'zgaruvchilari dunyosini o'rganib chiqdik. Global muhit o'zgaruvchilari ko'pincha ular aniqlangan jarayon tomonidan yaratilgan har qanday bola jarayoni orqali kirishadi. Mahalliy muhit o'zgaruvchilariga faqat ular aniqlangan jarayondan kirish mumkin bo'ladi.

Linux tizimi tizim muhiti haqidagi ma'lumotlarni saqlash uchun har bir global va mahalliy muhit o'zgaruvchilaridan foydalanadi. Siz ushbu ma'lumotga qobiq buyruq qatori interfeysidan, shuningdek, ichki qobiq skriptlaridan kirishingiz mumkin bo'ladi. Bash qobig'i asl UNO Bourne qobig'ida belgilangan tizim muhiti o'zgaruvchilari, shuningdek, ko'plab yangi muhit o'zgaruvchilardan foydalanadi. PATH muhit o'zgaruvchisi bajariladigan buyruqni qidirishda bash qobig'i qabul qiladigan qidiruv naqshini belgilaydi. Dasturlaringiz bilan ishlashni osonlashtirish uchun siz o'zingizning kataloglaringizni yoki ehtimol joriy katalog belgisini qo'shish uchun PATH muhit o'zgaruvchisini o'zgartirishingiz mumkin. Shuningdek, siz o'zingizning foydalanishingiz uchun global va mahalliy muhit o'zgaruvchilaringizni yaratishingiz mumkin. Atrof-muhit o'zgaruvchisi yaratilgandan so'ng, u butun qobiq sessiyasi uchun mavjud bo'ladi.

Bash qobig'ini ishga tushirgandan so'ng ishga tushiradigan ko'plab boshlang'ich fayllar mavjud. Ushbu ishga tushirish fayllari har bir bash seansi uchun standart muhit o'zgaruvchilarini o'rnatish uchun muhit o'zgaruvchilari ta'riflarini o'z ichiga olishi mumkin. Tizimga kirgandan keyin Linux tizimi bash qobig'i /etc/profile boshlang'ich fayliga, shuningdek uchtasiga kiradi mahalliy fayllar har bir foydalanuvchi uchun ishga tushirish, $HOME/.bash, $HOME/.bash login va $HOME/.profile.

Foydalanuvchilar ushbu fayllarni atrof-muhit o'zgaruvchilari va ishga tushirish skriptlarini o'z foydalanishlari uchun moslashtiradilar. Bash qobig'i qo'shimcha ravishda muhit o'zgaruvchan massivlarni taqdim etadi. Ushbu muhit o'zgaruvchilari bitta o'zgaruvchida bir nechta qiymatlarni o'z ichiga olishi mumkin. Siz indeks qiymatini ko'rsatish orqali individual ravishda yoki to'liq malakali muhit o'zgaruvchisi qatori nomini ko'rsatish orqali qiymatlarga kirishingiz mumkin bo'ladi. Va nihoyat, ushbu qo'llanmada biz buyruq taxalluslaridan foydalanishni eslatib o'tishimiz kerak. Atrof-muhit o'zgaruvchilari bo'lmasa-da, buyruq taxalluslari deyarli muhit o'zgaruvchilari kabi ishlaydi. Ular buyruq uchun taxallusni parametrlari bilan birga belgilash imkonini beradi. Juda uzoq buyruq va parametrlarni kiritish o'rniga, siz oddiy taxallusni berishingiz va istalgan vaqtda shell seansida taxallusdan foydalanishingiz mumkin bo'ladi.

Linux muhit o'zgaruvchilari qobiq o'zgaruvchilari bilan birga foydalanuvchi seansidagi sozlamalarni belgilaydi.

Ular avtomatik ravishda yuklanadi, lekin bekor qilinishi mumkin. Har safar tizimga kirganingizda muhit yaratiladi.

Linux muhiti o'zgaruvchilari, qobiq o'zgaruvchilari

Atrof-muhit o'zgaruvchilari foydalanuvchi qobig'i jarayoni va uning ichida paydo bo'lgan barcha bolalar jarayonlari uchun ishlatiladi.

Shell o'zgaruvchilari joriy sessiya holatini aniqlaydigan ma'lumotlarni o'z ichiga oladi. Masalan, joriy katalog.

Har bir sessiya muhit o'zgaruvchilari va qobiq o'zgaruvchilardan foydalanadi.

Atrof-muhit o'zgaruvchilari ro'yxatini ishga tushirish orqali ko'rish mumkin printenv yoki env

……
LC_MEASUREMENT=ru_RU.UTF-8
LESSCLOSE=/usr/bin/lesspipe %s %s
LC_PAPER=ru_RU.UTF-8
LC_MONETARY=ru_RU.UTF-8
LANG=en_US.UTF-8
……

Farqi shundaki printenv ma'lum bir o'zgaruvchi uchun ma'lumotlarni ko'rsatishga imkon beradi - masalan:

Env ning afzalligi shundaki, u o'zgaruvchini ma'lum bir buyruqqa o'tkazish imkonini beradi

Masalan:

env SHELL=»/bin/bash» ls -la /opt

Atrof-muhit o'zgaruvchilarini ko'rish

BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
……

Chiqishni qayta yo'naltirish mumkin Ozroq navigatsiya qilishni osonlashtirish uchun

Joriy muhitni o'zgartirmasdan chiqishdagi keraksiz ma'lumotlardan xalos bo'lish uchun siz buni qilishingiz mumkin:

POSIX rejimida bash bilan belgilangan funksiyalar chop etilmaydi

Eng ko'p ishlatiladigan o'zgaruvchilar:
  • SHELL- buyruqlarni sharhlovchi qobiq
  • USER— foydalanuvchi
  • P.W.D.- joriy katalog
  • MUDDAT— emulyatsiya qilingan terminal turi

Shell buyruqlari o'zgaruvchilar qiymatini o'zgartirishga imkon beradi. Shunday qilib, pwd joriy katalogni konsolga ko'rsatadi

/home/admin

Bu PWD qobiq o'zgaruvchisi

admin@desktop:~$ set | grep PWD

OLDPWD=/tmp
PWD=/home/admin

Keling, /tmp ga o'tamiz va qiymat qanday o'zgarishini ko'ramiz

admin@desktop:~$ cd /tmp/

admin@desktop:/tmp$ set | grep PWD

OLDPWD=/home/admin
PWD=/tmp

Siz katalogni o'zgartirganingizda, qobiq o'zgaruvchisi PWD qiymati shunchaki o'zgarishini va OLDPWD

Atrof-muhit yoki qobiq o'zgaruvchisini qanday o'rnatish kerak

Shell o'zgaruvchisi shunday qo'shiladi

SOMEVAR="Salom"

Bu env chiqishida bo'lmaydi, chunki u muhit o'zgaruvchisi emas, balki qobiq o'zgaruvchisidir.

Ismdan oldin $ belgisini qo'shish orqali tarkibni echo orqali ko'rishingiz mumkin

salom

O'zgaruvchini muhitga qo'shish uchun uni eksport qilishingiz kerak

eksport SOMEVAR = "Salom"

SOMEVAR=Salom

Shundan so'ng, qiymat bolalar jarayonlari tomonidan meros qilib olinadi.

Siz kalit bilan bir xil eksport buyrug'i yordamida muhit o'zgaruvchisini o'chirishingiz mumkin -n

Qiymat o'rnatilmagan qobiqdan o'chiriladi

Kirish paytida o'zgaruvchilarni avtomatik yuklash

Linux tizimlari fayllardan foydalanadi ~/.bashrc, ~/.bash_profile, ~/.bash_login yoki ~/.profil o'zgaruvchilarni aniqlash uchun. Kirish paytida fayllar o'qiladi, qaysi biri tarqatilishiga bog'liq.

Ubuntu/Debain da bu ~/.bashrc. U atrof-muhit o'zgaruvchilari va qobiq o'zgaruvchilarini qo'shadi.

Birinchisi o'qiladi /etc/profile. U qaysi fayllardan keyingi va qanday tartibda foydalanishni belgilaydi va bekor qilinishi mumkin.

Kirish bo'lmagan seans uchun o'zgaruvchilar /etc/bash.bashrc da o'rnatiladi. Bu seans fonda ishlaydigan skriptlar uchun odatiy hisoblanadi.

Ko'pgina vazifalar uchun tahrirlash kifoya ~/.bashrc.



 


O'qing:



Qattiq diskni qanday qismlarga bo'lish kerak

Qattiq diskni qanday qismlarga bo'lish kerak

Qattiq diskni ma'lumotlarni yo'qotmasdan qanday qilib ikkita bo'limga bo'lish mumkin, agar asosiy jildga (C :) harfi bilan aylantirilgan bitta bo'lim mavjud bo'lsa, ...

Biz qattiq diskni bo'limlarga ajratamiz

Biz qattiq diskni bo'limlarga ajratamiz

Windows-ni o'rnatishda qattiq disk an'anaviy ravishda kamida ikkita bo'limga bo'linadi - C harfi bilan kichikroq tizim bo'limi va kattaroq foydalanuvchi bo'limi...

Kompyuter yoqilganda signal beradi

Kompyuter yoqilganda signal beradi

Nashr qilingan sana: 02/01/2011 Kompyuter yoqilmasa-da, signal eshitadigan paytlar bo'ladi. Agar tinglasangiz, aniq bo'ladi ...

Windows-da fayl kengaytmalarini to'g'ri o'zgartirish Arxiv kengaytmasini qanday o'zgartirish mumkin

Windows-da fayl kengaytmalarini to'g'ri o'zgartirish Arxiv kengaytmasini qanday o'zgartirish mumkin

Windows operatsion tizimlari mashhurdir, chunki ular ishchi kompyuterlarni foydalanuvchi o'zi xohlagancha sozlash imkonini beradi. Hali bitta OS yo'q ...

tasma tasviri RSS