M. Garrels. Bash qo'llanma. O'zgaruvchilar. Linuxda mahalliy, foydalanuvchi va tizim muhiti o'zgaruvchilari qanday o'rnatiladi va o'chiriladi qobiq o'zgaruvchisi qayerda yozilganligini qanday topish mumkin

O'zgaruvchan turlari

Yuqoridagi misollardan ko'rinib turibdiki, qobiq o'zgaruvchilari odatda bosh harflar bilan yoziladi. Bash ikki turdagi o'zgaruvchilar ro'yxatini saqlaydi:

Global o'zgaruvchilar

Global yoki atrof-muhit o'zgaruvchilari barcha qobiqlarda mavjud. Atrof-muhit o'zgaruvchilarini ko'rsatish uchun siz buyruqlardan foydalanishingiz mumkin env yoki printenv. Ushbu buyruqlar paketning bir qismi sifatida taqdim etiladi sh-utils.

Quyida odatiy chiqish ko'rsatilgan:

Franky ~> printenv CC=gcc CDPATH=.:~:/usr/local:/usr:/ CFLAGS=-O2 -fomit-frame-pointer COLORTERM=gnome-terminal CXXFLAGS=-O2 -fomit-frame-pointer DISPLAY=: 0 domen = HQ.QRELS.E E = TOR = VI FRADIT = 1 gdm_desktop_sfft = 1 gdm_desktop_ffilt = 1 gdm_desktop_ffils = / h va GTK / GTK / GTKKRC -1.2-gnome2 GWMCOLOR=to‘q yashil GWMTERM=xterm HISTFILESIZE=5000 history_control=inordups HISTSIZE=2000 HOME=/nethome/franky HOSTNAME=octarine.hq.garrels.be INPUTRC=/etc/JAVFRANK/JAVFRANK/JAVFRANKY=MEVJA j2sdk1.4.0 LANG=en_US LDFLAGS=-s LD_LIBRARY_PATH=/usr/lib/mozilla:/usr/lib/mozilla/plugins LESSCHARSET=latin1 LESS=-edfMQ LESSOPEN=|/usr/bin/lessEXPipe.sh %s LOCAL_MACHINE=oktarin LOGNAME=franky LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd= 40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*. com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz= 01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01; 31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31: *.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*. tif=01;35: MACHINES=oktarin MAILCHECK=60 MAIL=/var/mail/franky MANPATH=/usr/man:/usr/share/man/:/usr/local/man:/usr/X11R6/man MEAN_MACHINES= octarine MOZ_DIST_BIN=/usr/lib/mozilla MOZILLA_FIVE_HOME=/usr/lib/mozilla MOZ_PROGRAM=/usr/lib/mozilla/mozilla-bin MTOOLS_FAT_COMPATIBILITY=1 MYMALLOC=0 NTPNTPSXERPA=0 NTPNTPSXERPlugin=1 4 plagin/: / usr/lib/netscape/plugins OLDPWD=/nethome/franky OS=Linux PAGER=kamroq PATH=/nethome/franky/bin.Linux:/nethome/franky/bin:/usr/local/bin:/usr/local/ sbin :/usr/X11R6/bin:/usr/bin:/usr/sbin:/bin:/sbin:. PS1=\[\033franky \w\[\033 PS2=Qoʻshimcha kiritish> PWD=/nethome/franky SESSION_MANAGER=local/octarine.hq.garrels.be:/tmp/.ICE-unix/22106 SHELL=/bin /bash SHELL_LOGIN=--kirish SHLVL=2 SSH_AGENT_PID=22161 SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass SSH_AUTH_SOCK=/tmp/ssh-XXmhQ4fC/agent.2TYPEMt=/agent.2TYPEMt= franky USER=franky _=/usr/bin/printenv VISUAL=vi WINDOWID=20971661 XAPPLRESDIR=/nethome/franky/app-defaults XAUTHORITY=/nethome/franky/.Xauthority XENVIRONMENT=/nethome/SEFACHPAUS=/nethome/SEFRANky/. /X11R6/lib/X11/%L/%T/%N%C%S:/usr/X11R6/lib/X11/%l/%T/%N%C%S:/usr/X11R6/lib/X11 /%T/%N%C%S:/usr/X11R6/lib/X11/%L/%T/%N%S:/usr/X11R6/lib/X11/%l/%T/%N%S :/usr/X11R6/lib/X11/%T/%N%S XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB XMODIFIERS=@im=hech XTERMID= XWINHOME=/usr/X11R6 X=X11R6 - YACC=bi y

Mahalliy o'zgaruvchilar

Mahalliy o'zgaruvchilar faqat joriy buyruqlar qobig'ida mavjud. Agar o'rnatilgan buyruq bo'lsa o'rnatish hech qanday parametrlarsiz ishlatilsa, u barcha oʻzgaruvchilar (jumladan, ish vaqti oʻzgaruvchilari) va funksiyalar roʻyxatini qaytaradi. Keling, formatlashdan foydalanamiz va o'zgaruvchilarning joylashishini hisobga olgan holda tartiblangan natijani yaratamiz.

Quyida buyruqlar natijalarini solishtirish orqali yaratilgan diff fayli keltirilgan printenv Va o'rnatish, buyruq tomonidan ham ko'rsatiladigan funktsiyalar ro'yxatidan olib tashlangandan so'ng o'rnatish:

Franky ~> diff set.sorted printenv.sorted | grep "<" | awk "{ print $2 }" BASE=/nethome/franky/.Shell/hq.garrels.be/octarine.aliases BASH=/bin/bash BASH_VERSINFO=(="2" BASH_VERSION="2.05b.0(1)-release" COLUMNS=80 DIRSTACK=() DO_FORTUNE= EUID=504 GROUPS=() HERE=/home/franky HISTFILE=/nethome/franky/.bash_history HOSTTYPE=i686 IFS=$" LINES=24 MACHTYPE=i686-pc-linux-gnu OPTERR=1 OPTIND=1 OSTYPE=linux-gnu PIPESTATUS=(="0") PPID=10099 PS4="+ PWD_REAL="pwd SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor THERE=/home/franky UID=504

O'zgaruvchilarni mazmuniga ko'ra ajratish

O'zgaruvchilarni mahalliy va globalga bo'lishdan tashqari, biz ularni o'zgaruvchida qanday tarkib saqlanganiga qarab toifalarga ajratishimiz mumkin. Shu munosabat bilan o'zgaruvchilar to'rt turga bo'linadi:

  • String o'zgaruvchilari
  • Butun sonli oʻzgaruvchilar
  • O'zgaruvchilar - konstantalar
  • O'zgaruvchilar - massivlar

Ushbu turdagi o'zgaruvchilarni 10-bobda muhokama qilamiz. Endi biz o'zgaruvchilarimizda butun son va satr qiymatlaridan foydalanamiz.

O'zgaruvchilar yaratish

O'zgaruvchilarda katta va kichik harflar farqlanadi va sukut bo'yicha katta harflar ishlatiladi. Ba'zan mahalliy o'zgaruvchilarni yozish uchun kichik harflardan foydalanish odatiy holdir. Biroq, o'zgaruvchilar nomlari uchun har qanday belgilardan foydalanishingiz va hatto katta va kichik harflarni aralashtirishingiz mumkin. Oʻzgaruvchilar nomlarida raqamlardan ham foydalanishingiz mumkin, lekin raqamlar bilan boshlangan nomlarga ruxsat berilmaydi:

Prompt> eksport 1number=1 bash: eksport: `1number=1": haqiqiy identifikator emas

Buyruqlar qobig'ida o'zgaruvchini o'rnatish uchun quyidagi buyruqdan foydalaning

VARNAME="qiymat"

Teng belgisi atrofida bo'sh joy qo'ymang, bu xatolarga olib keladi. O'zgaruvchilarga qiymatlar qo'yganingizda, satr tarkibini qo'shtirnoq ichiga olish yaxshi odatdir; bu xato qilish ehtimolini kamaytiradi.

Katta va kichik harflar, raqamlar va bo'shliqlardan foydalanishning ba'zi misollari (buyruq topilmadi xabari muammo borligini ko'rsatadi - taxminan.):

Franky ~> MYVAR1="2" franky ~> echo $MYVAR1 2 franky ~> first_name="Franky" franky ~> echo $first_name Franky franky ~> full_name="Franky M. Singh" franky ~> echo $full_name Franky M. Singh franky ~> MYVAR-2="2" bash: MYVAR-2=2: buyruq topilmadi franky ~> MYVAR1 ="2" bash: MYVAR1: buyruq topilmadi franky ~> MYVAR1 = "2" bash: 2: buyruq topilmadi franky ~> o'rnatilmagan MYVAR1 birinchi_ism to'liq_ism franky ~> echo $MYVAR1 $first_name $to'liq_ism<--no output-->ochiqchasiga ~>

O'zgaruvchilarni eksport qilish

Yuqoridagi misolda ko'rsatilganidek yaratilgan o'zgaruvchi faqat joriy buyruqlar qobig'ida mavjud. Bu mahalliy o'zgaruvchidir: joriy qobiqning asosiy jarayonlari bu o'zgaruvchidan xabardor bo'lmaydi. O'zgaruvchilarni pastki qavatga o'tkazish uchun bizga kerak eksport u o'rnatilgan buyruq yordamida eksport. Eksport qilinadigan o'zgaruvchilar atrof-muhit o'zgaruvchilari deb ataladi. Qiymat belgilash va eksport qilish odatda bir bosqichda amalga oshiriladi:

VARNAME="qiymat"ni eksport qilish

Subshell ota-ona jarayonidan meros bo'lib qolgan o'zgaruvchilarni o'zgartirishi mumkin, ammo asosiy jarayon tomonidan kiritilgan o'zgarishlar ota-ona jarayoniga ta'sir qilmaydi. Bu quyidagi misolda ko'rsatilgan:

Franky ~> to'liq_ism="Franky M. Singh" franky ~> bash franky ~> echo $full_name franky ~> exit franky ~> to'liq_ismni eksport qilish franky ~> bash franky ~> echo $to'liq_ism Franky M. Singh franky ~> to'liq_ismni eksport qilish= "Buyuk Karl" franky ~> echo $full_name Buyuk Charlz franky ~> exit franky ~> echo $full_name Franky M. Singh franky ~>

Birinchi marta pastki qavat full_name qiymatini o'qishga harakat qilganda, qiymat o'rnatilmagan (buyruq aks-sado bo'sh qatorni ko'rsatadi). Pastki qavatdan chiqqandan so'ng, full_name o'zgaruvchisi asosiy qobiqqa eksport qilinadi - o'zgaruvchiga qiymat berilganidan keyin eksport qilish mumkin. Keyinchalik, ota-qobiqdan eksport qilingan o'zgaruvchini ko'rsatadigan yangi pastki qobiq boshlanadi. O'zgaruvchi o'zgartiriladi va unda boshqa qiymat saqlanadi, lekin asosiy qobiqda bu o'zgaruvchining qiymati bir xil bo'lib qoladi.

Zaxiralangan o'zgaruvchilar

Bourne Reserved Shell o'zgaruvchilari

Bash xuddi Bourne qobig'i kabi ba'zi qobiq o'zgaruvchilardan foydalanadi. Ba'zi hollarda, Bash o'zgaruvchiga standart qiymatini belgilaydi. Quyidagi jadval ko'rsatilgan qisqa Tasvir bu oddiy qobiq o'zgaruvchilari:

3.1-jadval. Bourne Reserved Shell o'zgaruvchilari

O'zgaruvchan nomi Ta'rif

O'rnatilgan buyruq yordamida yo'lni qidirishda foydalaniladigan, ikki nuqta bilan ajratilgan kataloglar ro'yxati CD.

Bosh sahifa katalogi joriy foydalanuvchi; o'rnatilgan buyruqda sukut bo'yicha ishlatiladi CD. Bu o'zgaruvchining qiymati tilda belgisi o'rniga ham ishlatiladi.

Maydonlarni ajratish uchun ishlatiladigan belgilar ro'yxati; qobiq barcha almashtirishlarni amalga oshirgandan so'ng, natijani alohida so'zlarga ajratganda ishlatiladi.

Agar ushbu parametr fayl nomiga o'rnatilgan bo'lsa va MAILPATH o'rnatilmagan bo'lsa, Bash foydalanuvchiga ko'rsatilgan faylda pochta qabul qilinganligi haqida xabar beradi.

Buyruqlar qobig'i vaqti-vaqti bilan yangi pochta mavjudligini tekshiradigan fayl nomlarining ikki nuqta bilan ajratilgan ro'yxati.

O'rnatilgan buyruq tomonidan qayta ishlangan parametrdagi oxirgi argumentning qiymati getopts.

O'rnatilgan buyruq tomonidan qayta ishlangan oxirgi parametr argumentining indeksi getopts.

Qobiq buyruqlarni qidiradigan kataloglarning ikki nuqta bilan ajratilgan ro'yxati.

Birlamchi so'rov liniyasi. Standart qiymat - ""\s-\v\$ "".

Ikkilamchi tezkor qator. Standart qiymat - ""> "".

Bash zahiralangan o'zgaruvchilar

Ushbu o'zgaruvchilarning qiymatlari Bash-da o'rnatiladi yoki ishlatiladi, lekin ular odatda boshqa qobiqlarda maxsus hisoblanmaydi.

3.2-jadval. Bash zahiralangan o'zgaruvchilar

O'zgaruvchan nomi Ta'rif

Ushbu o'zgaruvchi qobiqning foydalanuvchi bilan qanday ishlashini va vazifalarni bajarishini boshqaradi.

Joriy Bash misolini ishga tushirish uchun to'liq yo'l ishlatiladi.

Agar bu o'zgaruvchi Bash skriptni bajarish uchun chaqirilgan vaqtda o'rnatilgan bo'lsa, uning qiymati skript bajarilishidan oldin o'qilishi kerak bo'lgan boshlang'ich fayl nomi sifatida ishlatiladi.

Joriy Bash nusxasining versiya raqami.

O'zgaruvchi faqat o'qish uchun mo'ljallangan massiv bo'lib, massiv elementlari versiya ma'lumotlarini saqlaydi ushbu misoldan Bash.

Tanlangan ro'yxatlarni chop etishda o'rnatilgan buyruq ishlatiladi tanlang terminalning kengligini aniqlash uchun. Signalni qabul qilishda avtomatik sozlash SIGVINCH.

Joriy kursor o'rnini saqlaydigan so'zga $(COMP_WORDS) ichidagi ko'rsatgich.

Joriy buyruq qatori.

Joriy buyruqning boshlanishiga nisbatan joriy kursor holatiga ko'rsatgich.

O'zgaruvchi - joriy buyruq satrida ishlatiladigan alohida so'zlardan iborat massiv.

O'zgaruvchi - bu Bash o'qiydigan massiv mumkin bo'lgan variantlar To'ldirishlarni dasturlash uchun mo'ljallangan xizmat tomonidan chaqiriladigan qobiq funksiyasi tomonidan yaratilgan satr yakunlari

O'zgaruvchi - bu kataloglar stekining joriy holatini saqlaydigan massiv.

Raqamli samarali foydalanuvchi identifikatori Joriy foydalanuvchining identifikatori.

O'rnatilgan buyruqda ishlatiladigan standart muharrir fc-e parametri belgilanadi

Fayl nomini avtomatik toʻldirishda eʼtiborga olinmasligi kerak boʻlgan qoʻshimchalarning ikki nuqta bilan ajratilgan roʻyxati.

Hozirda ishlayotgan qobiq funksiyasining nomi.

Fayl nomlarini almashtirishda e'tiborga olinmaydigan fayl nomlari to'plamini belgilaydigan naqshlarning ikki nuqta bilan ajratilgan ro'yxati.

O'zgaruvchi joriy foydalanuvchi tegishli bo'lgan guruhlar ro'yxatini o'z ichiga olgan massivdir.

Buyruqlar tarixini almashtirish, tez almashtirish va tugallangan almashtirishlarni tokenlarga ajratishni boshqaradigan uchta belgigacha.

Buyruqlar tarixidagi joriy buyruqning raqami yoki buyruqlar tarixi ro'yxatidagi uning indeksi.

Buyruqning buyruqlar tarixi fayliga qo'shilishi yoki qo'shilmasligini aniqlaydi.

Buyruqlar tarixi saqlanadigan fayl nomi. Standart qiymat: ~/.bash_history.

Buyruqlar tarixi faylida mavjud satrlarning standart maksimal soni 500 ta.

Buyruqning buyruqlar tarixi ro'yxatlarida saqlanishi kerakligini aniqlaydigan ikkita nuqta bilan ajratilgan naqshlar ro'yxati.

Buyruqlar tarixi ro'yxatida saqlanishi mumkin bo'lgan standart maksimal buyruqlar soni 500 ta.

U /etc/hosts fayli bilan bir xil formatdagi fayl nomini o'z ichiga oladi, uni buyruq qobig'i xost nomini to'ldirishi kerak bo'lganda o'qilishi mumkin.

Joriy xost nomi.

Bash ishlayotgan mashinani tavsiflovchi satr.

Kirish oqimining yakunlovchi belgisi sifatida belgini olganida qobiq nima qilishini boshqaradi EOF(fayl oxiri belgisi).

Standart /etc/inputrc faylini almashtiradigan Readline dasturini ishga tushirish faylining nomi.

Nomlari LC_ belgilari bilan boshlanadigan o'zgaruvchilar tomonidan aniq ko'rsatilmagan barcha toifalar uchun mahalliy toifani aniqlash uchun foydalaniladi.

Ushbu o'zgaruvchi LANG o'zgaruvchisining qiymatini va mahalliylashtirish toifasini belgilaydigan LC_ belgilaridan boshlanadigan barcha boshqa o'zgaruvchilarni bekor qiladi.

Ushbu o'zgaruvchi naqshga mos keladigan fayl nomlarini saralashda foydalaniladigan tartiblash tartibini belgilaydi va diapazonlar talqinini, moslik sinflarini va fayl nomini almashtirish va naqsh moslashtirish uchun belgilarni taqqoslash qoidalarini belgilaydi.

Ushbu o'zgaruvchi belgilar qanday talqin qilinishini va ular fayl nomini kengaytirish va naqsh moslashtirish uchun ma'lum bir sinfga tegishli yoki yo'qligini aniqlaydi.

Ushbu o'zgaruvchi satrlarni qayta ishlash uchun ishlatiladigan lokalizatsiya toifasini belgilaydi qo'sh tirnoq, oldidan $ belgisi.

Bu o'zgaruvchi raqam formati uchun lokalizatsiya toifasini belgilaydi.

Hozirda bajarilayotgan skript yoki qobiq funksiyasidagi satr raqami.

O'rnatilgan buyruq yordamida ishlatiladi tanlang tanlangan ro'yxatlar ko'rsatiladigan ustun uzunligini aniqlash uchun.

Standart GNU CPU-COMPANY-SYSTEM formatidan foydalangan holda Bash ishlayotgan tizim turini to'liq tavsiflovchi qator.

Bir necha soniya ichida qobiq MAILPATH yoki MAIL o'zgaruvchilarida ko'rsatilgan fayllardagi pochtani qanchalik tez-tez tekshirishi kerakligini belgilaydi.

O'rnatilgan buyruq yordamida oldingi ishchi katalog to'plami CD.

Agar 1 ga o'rnatilgan bo'lsa, Bash o'rnatilgan buyruq tomonidan yaratilgan xato xabarlarini ko'rsatadi getopts.

String tavsifi operatsion tizim, qaysi Bash ishlaydi.

O'zgaruvchi oxirgi quvur liniyasidagi jarayondan chiqish holati qiymatlari ro'yxatini o'z ichiga olgan massivdir (bitta buyruqdan iborat bo'lishi mumkin).

Agar bash ishga tushirilganda bu o'zgaruvchi muhitga qo'shilsa, qobiq POSIX rejimiga o'tadi.

Agar bu o'zgaruvchi o'rnatilsa, qiymat har bir asosiy so'rov satri (PS1) chiqarilishidan oldin bajariladigan buyruq sifatida talqin qilinadi.

Bu o'zgaruvchining qiymati buyruq uchun ishlatiladi tanlang tezkor qator sifatida. Birlamchi - ""#? ""

Echoingni yoqish uchun -x opsiyasi o'rnatilganda buyruq qatoridan oldin chiqariladigan so'rov satrining qiymati buyruq qatori; sukut bo'yicha ""+ "".

Joriy ishchi katalog o'rnatilgan buyruq bilan o'rnatiladi CD.

Har safar ushbu parametrga kirishda 0 dan 32767 gacha bo'lgan oraliqda tasodifiy butun son hosil bo'ladi. Bu o'zgaruvchining qiymati tasodifiy sonlar generatorlarida qo'llaniladi.

O'rnatilgan buyruqda standart o'zgaruvchi o'qing.

Bu o'zgaruvchi buyruq qobig'i ishga tushirilgandan beri o'tgan soniyalar sonini ko'rsatadi.

Buyruqlar qobig'ida o'rnatilgan parametrlar ro'yxati; ikki nuqta bilan ajratiladi.

Har safar yangi Bash nusxasi ishga tushirilganda bir marta ortadi.

Ushbu parametrning qiymati oldindan ajratilgan so'z bo'lgan quvurlar uchun ish vaqti ma'lumotlarini chiqarish formatini belgilaydigan qator sifatida ishlatiladi. vaqt.

Agar TMOUT o'zgaruvchisi noldan katta qiymatga o'rnatilgan bo'lsa, u o'rnatilgan buyruqda standart vaqt tugashi sifatida ko'rib chiqiladi. o'qing. Interfaol rejimda buyruq qobig'i ishga tushirilganda, bu qiymat dastlabki so'rov satrini chiqargandan so'ng, qobiq kiritishni kutadigan soniyalar soni sifatida talqin qilinadi. Agar kirish olinmasa, bu vaqtdan keyin Bash chiqadi.

Raqamli qiymat, joriy foydalanuvchi uchun haqiqiy foydalanuvchi identifikatori.

Qo'shimcha ma'lumot olish uchun Bash man sahifalariga yoki hujjatlarga qarang. Ba'zi o'zgaruvchilar faqat o'qish uchun mo'ljallangan, ba'zilari avtomatik ravishda o'rnatiladi va ba'zilari standart qiymatidan boshqa narsaga o'rnatilganda ma'nosiz bo'lib qoladi.

Maxsus parametrlar

Buyruqlar qobig'i ba'zi parametrlarni maxsus tarzda ko'rib chiqadi. Ushbu parametrlardan faqat qiymatlarni olish uchun foydalanish mumkin, ularga qiymat berish mumkin emas.

3.3-jadval. Bash maxsus o'zgaruvchilari

Belgi Ta'rif

Birinchisidan boshlab pozitsion parametrlarni qaytaradi. Agar parametr qo'sh tirnoq ichida ko'rsatilgan bo'lsa, u IFS maxsus o'zgaruvchisining birinchi belgisi bilan ajratilgan har bir parametrning qiymatlarini o'z ichiga olgan bitta so'z bilan almashtiriladi.

Birinchisidan boshlab pozitsion parametrlarni qaytaradi. Agar parametr qo'sh tirnoq ichida ko'rsatilgan bo'lsa, har bir parametr alohida so'z sifatida qaytariladi.

Kasr qiymati sifatida belgilangan pozitsion parametrlar sonini qaytaradi.

Oldingi rejimda bajarilgan oxirgi quvur liniyasining qaytish kodini qaytaradi.

Defis parametri joriy parametrning bayroqlarini qaytaradi, chunki ular o'rnatilgan buyruq chaqirilganda o'rnatilgan. o'rnatish, yoki ular qobiqning o'zi tomonidan o'rnatilganidek (masalan, -i).

Shell jarayoni identifikatorini qaytaradi.

Fon (asinxron) rejimida bajarilgan oxirgi buyruqning jarayon identifikatorini qaytaradi.

Shell yoki skript nomini qaytaradi.

"pastki chiziq" parametrining qiymati buyruq qobig'i ishga tushirilganda o'rnatiladi va o'z ichiga oladi to'liq ism argumentlar ro'yxatida uzatilganidek bajariladigan qobiq yoki skript. Keyin qiymat oldingi buyruqning oxirgi argumenti bilan almashtiriladi. Ushbu parametr, shuningdek, ushbu buyruqqa eksport qilingan muhitda bajarilgan va joylashtirilgan har bir buyruqning to'liq yo'lini belgilaydi. Pochta tekshirilganda, bu parametr pochta faylining nomini o'z ichiga oladi.

Pozitsion parametrlar qobiq skripti nomidan keyingi so'zlardir. Ular $1, $2, $3 va hokazo o'zgaruvchilarda saqlanadi. O'zgaruvchilar kerak bo'lganda ichki massivga qo'shiladi. $# o'zgaruvchisi quyidagi oddiy skriptda ko'rsatilganidek, parametrlarning umumiy sonini belgilaydi:

# positional.sh # Bu skript 3 ta pozitsion parametrlarni oʻqiydi va ularni chop etadi. POSPAR1="$1" POSPAR2="$2" POSPAR3="$3" aks-sadosi "$1 - birinchi pozitsion parametr, \$1." echo "$2 - ikkinchi pozitsion parametr, \$2." echo "$3 - uchinchi pozitsion parametr, \$3." echo echo "Pozitsiyaviy parametrlarning umumiy soni $#."

Skriptni ishga tushirishda siz argumentlarning istalgan sonini belgilashingiz mumkin:

Franky ~> positional.sh bir ikki uch to'rt besh bir birinchi pozitsion parametr, $1. ikki - ikkinchi pozitsion parametr, $2. uch - uchinchi pozitsion parametr, $3. Pozitsion parametrlarning umumiy soni 5. franky ~> positional.sh one two one - birinchi pozitsion parametr, $1. ikki - ikkinchi pozitsion parametr, $2. uchinchi pozitsion parametr, $3. Pozitsiyaviy parametrlarning umumiy soni 2 ta.

Ushbu parametrlardan foydalanish bo'yicha qo'shimcha ma'lumot olish uchun 7-bob, Shartli bayonotlar va shift o'rnatilgan buyruq bo'limiga qarang.

Boshqa maxsus parametrlarga misollar:

Franky ~> grep lug'ati /usr/share/dict/words lug'ati franky ~> echo $_ /usr/share/dict/words franky ~> echo $$ 10662 franky ~> mozilla & 11064 franky ~> echo $! 11064 franky ~> echo $0 bash franky ~> echo $? 0 franky ~> ls doesnotexist ls: doesnotexist: Bunday fayl yoki katalog yo'q franky ~> echo $? 1 ochiqchasiga ~>

Foydalanuvchi ochiqchasiga buyruqni kiritish bilan boshlanadi grep, o'zgaruvchiga qiymatni belgilaydi _ . Bu qobiqning protsess identifikatori 10662. Ba'zi bir ishning bajarilishi ga o'tkazilsa fon rejimi, o'zgaruvchida! jarayon identifikatori bo'ladi fon ishi. Ishchi buyruq qobig'i bash. Agar xatolik yuz bergan bo'lsa, o'zgaruvchida? 0 (nol) dan farqli qaytish kodi bo'ladi.

O'zgaruvchilarga ega bo'lgan skriptlarni qo'llash doirasini kengaytirish

O'zgaruvchilar skriptingizni yanada o'qilishi mumkin qilishdan tashqari, skriptingizni boshqa kontekstlarda yoki boshqa maqsadlarda tezda ishlatishingizga yordam beradi. Quyidagi misolni ko'rib chiqing - uzoq serverda ishlaydigan juda oddiy skript zaxira nusxasi foydalanuvchining uy katalogi ochiqchasiga:

#!/bin/bash # Ushbu skript mening uy katalogimning zaxira nusxasini yaratadi. cd /home # Bu tar arxivini yaratadi cf /var/tmp/home_franky.tar franky > /dev/null 2>&1 # Avval eski bzip2 faylini olib tashlang. Qayta yo'naltirish xatolari, chunki # arxiv mavjud bo'lmasa, bu xatoliklarni keltirib chiqaradi. Keyin yangi siqilgan fayl yarating. rm /var/tmp/home_franky.tar.bz2 2> /dev/null bzip2 /var/tmp/home_franky.tar # Faylni boshqa xostga nusxalash - bu ishni aralashuvsiz bajarish uchun bizda ssh kalitlari mavjud. scp /var/tmp/home_franky.tar.bz2 bordeaux:/opt/backup/franky > /dev/null 2>&1 # Jurnal faylida vaqt belgisi yarating. sana >> /home/franky/log/home_backup.log echo zaxira nusxasi muvaffaqiyatli amalga oshirildi >> /home/franky/log/home_backup.log

Avvalo, har safar kerakli fayllar va kataloglarni qo'lda ko'rsatsangiz, xato qilish ehtimoli ko'proq. Ikkinchidan, foydalanuvchi deylik ochiqchasiga ushbu skriptni foydalanuvchiga o'tkazmoqchi Kerol, keyin oldin Kerol uchun skriptdan foydalanish imkoniyatiga ega bo'ladi Zaxira nusxasi uning uy katalogi uchun u biroz tahrir qilishi kerak bo'ladi. Agar foydalanuvchi ham xuddi shunday bo'ladi ochiqchasiga boshqa kataloglarni zaxiralash uchun ushbu skriptdan foydalanishni xohlaydi. Qo'llanilish doirasini kengaytirish uchun barcha fayllar, kataloglar, foydalanuvchi nomlari, server nomlari va boshqalar uchun o'zgaruvchilardan foydalaning. Keyin qiymatni faqat bir marta o'zgartirishingiz kerak va ma'lum bir parametr sodir bo'lgan barcha joylarni topish uchun butun skriptdan o'tishingiz shart emas. Misol:

#!/bin/bash # Ushbu skript mening uy katalogimning zaxira nusxasini yaratadi. # Skriptni siz uchun ishlashi uchun o'zgaruvchilar qiymatlarini o'zgartiring: BACKUPDIR=/home BACKUPFILES=franky TARFILE=/var/tmp/home_franky.tar BZIPFILE=/var/tmp/home_franky.tar.bz2 SERVER=bordeaux REMOTEDIR =/ opt/backup/franky LOGFILE=/home/franky/log/home_backup.log cd $BACKUPDIR # Bu tar arxivini yaratadi cf $TARFILE $BACKUPFILES > /dev/null 2>&1 # Avval eski bzip2 faylini olib tashlang. Qayta yo'naltirish xatolari, chunki # arxiv mavjud bo'lmasa, bu xatoliklarni keltirib chiqaradi. Keyin yangi siqilgan fayl yarating. rm $BZIPFILE 2> /dev/null bzip2 $TARFILE # Faylni boshqa xostga nusxalash - bu ishni aralashuvsiz bajarish uchun bizda ssh kalitlari mavjud. scp $BZIPFILE $SERVER:$REMOTEDIR > /dev/null 2>&1 # Jurnal faylida vaqt belgisi yarating. sana >> $LOGFILE echo zaxira nusxasi muvaffaqiyatli boʻldi >> $LOGFILE

Server bilan ishlash jarayonida qobiq uning xatti-harakati va resurslarga kirishini belgilaydigan katta hajmdagi ma'lumotlarni kompilyatsiya qiladi. Ushbu variantlardan ba'zilari qobiq sozlamalarida topilgan, boshqalari foydalanuvchi kiritishi bilan aniqlanadi.

Shell uchun bu ma'lumotni kuzatishning bir usuli - bu atrof-muhit. Atrof-muhit - bu tizimni belgilovchi o'zgaruvchilarni o'z ichiga olgan maydon, har safar sessiya boshlanganda qobiq tuzadi.

Ushbu qoʻllanmada atrof-muhit bilan oʻzaro aloqada boʻlish, muhit va qobiq oʻzgaruvchilarini interaktiv va undan foydalanish orqali oʻqish yoki oʻrnatish usullari tushuntiriladi. konfiguratsiya fayllari. Barcha harakatlar Ubuntu 12.04 VPS da amalga oshiriladi, ammo har qanday zamonaviy Linux tarqatish xuddi shunday ishlashi kerak.

Atrof-muhit va uning o'zgaruvchilari qanday ishlaydi

Har safar qobiq seansi faollashtirilganda, qobiq va uning asosiy jarayonlari uchun mavjud bo'lishi kerak bo'lgan ma'lumotlarni to'plash va kompilyatsiya qilish jarayoni boshlanadi. Qobiq bu ma'lumotlarni tizimdagi turli xil fayllar va sozlamalardan oladi.

Umuman olganda, atrof-muhit qobiq jarayoniga kerakli sozlamalarni to'playdigan va o'rnatadigan uzatish moslamasini ta'minlaydi, bu esa ularni o'z farzand jarayonlariga o'tkazadi.

Muhit kalit-qiymat juftliklarini o'z ichiga olgan satr shaklini oladi. Bir nechta qiymatlar odatda ikki nuqta (:) bilan ajratiladi. Har bir juftlik odatda shunday ko'rinadi:

KEY=value1:value2:...

Agar qiymatda bo'shliqlar bo'lsa, siz ikkita tirnoqdan foydalanishingiz kerak:

KEY="bo'shliqlar bilan qiymat"

Bunday holda, kalit ikkitadan birining o'zgaruvchisini anglatadi mavjud turlar: muhit yoki qobiq o'zgaruvchilari.

Atrof-muhit o'zgaruvchilari joriy qobiq uchun aniqlangan o'zgaruvchilar va barcha asosiy qobiqlar yoki jarayonlar tomonidan meros qilib olinadi. Atrof-muhit o'zgaruvchilari qobiqdan boshlangan jarayonlarga ma'lumot uzatish uchun ishlatiladi.

Shell o'zgaruvchilari faqat ular o'rnatilgan yoki aniqlangan qobiqda joylashgan o'zgaruvchilardir. Ular ko'pincha joriy ma'lumotlarni (masalan, joriy ishchi katalog) kuzatib borish uchun ishlatiladi.

Odatda, bunday o'zgaruvchilar bosh harflar yordamida belgilanadi. Bu foydalanuvchilarga boshqa kontekstlarda atrof-muhit o'zgaruvchilari o'rtasidagi farqni aniqlashga yordam beradi.

Chop etish qobig'i va muhit o'zgaruvchilari

Har bir seans o'z qobig'i va muhit o'zgaruvchilarini kuzatib boradi. Ularni olib tashlashning bir necha yo'li mavjud.

Barcha muhit o'zgaruvchilari ro'yxatini ko'rish uchun env yoki printenv buyruqlaridan foydalaning. Odatiy bo'lib, ular aynan bir xil natijani chiqaradilar:

printenv
SHELL=/bin/bash
TERM=xterm
USER=demoser
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd= 40;33;01:or=40;31;01:su=37;41:sg=30;43:ca:...
MAIL=/var/mail/demouser
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
PWD=/uy/demoser
LANG=en_US.UTF-8
SHLVL=1
HOME=/uy/demoser
LOGNAME=demoser
LESSOPEN=| /usr/bin/lesspipe %s
LESSCLOSE=/usr/bin/lesspipe %s %s
_=/usr/bin/printenv

Bu printenv va env buyruqlari chiqishining odatiy misolidir. Bu buyruqlar faqat bir nechta individual funktsiyalarda farqlanadi. Masalan, printenv alohida o'zgaruvchilarning qiymatlarini so'rashi mumkin:

printenv SHELL
/bin/bash

env buyrug'i buyruqqa o'zgaruvchan ta'riflar to'plamini uzatish orqali dasturlar ishlaydigan muhitni o'zgartirishga imkon beradi, masalan:

env VAR1="blahblah" command_to_run command_options

Yuqorida aytib o'tilganidek, bolalar jarayonlari odatda asosiy jarayonning muhit o'zgaruvchilarini meros qilib oladi, bu esa qiymatlarni o'zgartirish yoki bolalar jarayonlari uchun qo'shimcha o'zgaruvchilarni kiritish imkonini beradi.

Printenv buyrug'ining chiqishida ko'rib turganingizdek, ko'plab muhit o'zgaruvchilari yordamida yaratilgan tizim fayllari va foydalanuvchi aralashuvisiz jarayonlar.

Lekin qobiq o'zgaruvchilarini qanday ko'rasiz?

Buning uchun set buyrug'idan foydalaning. Qo'shimcha parametrlarsiz kiritilganda, to'plam barcha qobiq o'zgaruvchilari, muhit o'zgaruvchilari, mahalliy o'zgaruvchilar va qobiq funktsiyalari ro'yxatini beradi:

o'rnatish
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
. . .

Qoida tariqasida, bu ro'yxat ancha uzun. Uni qulayroq formatda ko'rsatish uchun uni peyjer dasturi yordamida oching:

Ushbu ro'yxat juda katta raqamni o'z ichiga oladi Qo'shimcha ma'lumot, ichida joylashgan bu daqiqa kerak emas (masalan, ba'zi bash funktsiyalari).

Chiqishni "tozalash" uchun siz qobiq funktsiyalarini chetlab o'tuvchi POSIX rejimida o'rnatilgan buyruqni bajarishingiz kerak. Joriy muhitni o'zgartirmaslik uchun buni pastki qavatda qilish kerak:

(to'siq -o posix; to'siq)

Bu harakat barcha muhit va qobiq o'zgaruvchilarini ko'rsatadi.

Shuningdek, siz ushbu chiqishni env/printenv buyruqlarining chiqishi bilan solishtirishingiz va faqat qobiq o'zgaruvchilarini ro'yxatga olishga harakat qilishingiz mumkin, ammo bunday ro'yxat ideal bo'lmaydi, chunki bu buyruqlarning chiqishi boshqacha:

comm -23<(set -o posix; set | sort) <(env | sort)

Ro'yxatda bir nechta muhit o'zgaruvchilari bo'lishi mumkin, chunki o'rnatish buyrug'i qiymatlarni tirnoq ichida chop etadi, lekin printenv va env buyruqlari bunday qilmaydi.

Biroq, bu ma'lum bir seansda o'rnatilgan muhit va qobiq o'zgaruvchilarini ko'rishning ajoyib usuli.

Bunday o'zgaruvchilar barcha turdagi maqsadlar uchun ishlatiladi. Ular jarayonlar orasidagi seans uchun doimiy qiymatlarni o'rnatishning muqobil usulini taqdim etadi, bu faylga o'zgartirish kiritish zaruratini yo'q qiladi.

Asosiy muhit va qobiq o'zgaruvchilari

Ba'zi foydali muhit va qobiq o'zgaruvchilari juda tez-tez ishlatiladi.

Quyida asosiy muhit o'zgaruvchilari ro'yxati keltirilgan:

  • SHELL: Kiritilgan buyruqlarni sharhlovchi qobiqni tavsiflaydi. Ko'pgina hollarda, bash sukut bo'yicha o'rnatiladi, lekin agar kerak bo'lsa, bu qiymat o'zgartirilishi mumkin.
  • MUDDAT: qobiq ishga tushirilganda emulyatsiya qilingan terminal turini belgilaydi. Operatsion talablarga qarab, turli xil apparat terminallari taqlid qilinishi mumkin. Odatda bu haqda tashvishlanishga hojat yo'q.
  • USER: joriy foydalanuvchi.
  • P.W.D.: joriy ishchi katalog.
  • OLDPWD: oldingi ishchi katalog. Cd - buyrug'i bajarilgan taqdirda qobiq uni saqlaydi.
  • LS_RANGLAR: ls buyrug'ining chiqishini ranglash uchun ishlatiladigan rang kodlarini belgilaydi. Ushbu chiqish foydalanuvchiga buyruq natijasini tezroq o'qishga yordam beradi (masalan, fayl turlarini tezda farqlash).
  • POCHTA: Foydalanuvchining joriy pochta qutisiga yo'l.
  • YO'L: Buyruqlarni bajarishda tizim kiradigan kataloglar ro'yxati. Foydalanuvchi buyruqni ishga tushirganda, tizim bajariladigan fayl uchun ushbu kataloglarni belgilangan tartibda tekshiradi.
  • LANG: Joriy til va mahalliylashtirish sozlamalari, jumladan belgilarni kodlash.
  • UY: Joriy foydalanuvchining uy katalogi.
  • _ : Oxirgi buyruq bajarildi.

Atrof-muhit o'zgaruvchilari ro'yxatini ko'rib chiqqandan so'ng, qobiq o'zgaruvchilari ro'yxatini ko'rib chiqing:

  • BASHOPTS: Bash-ni bajarishda foydalaniladigan variantlar ro'yxati. Bu muhit kutilganidek ishlayotganligini tekshirish uchun ishlatilishi mumkin.
  • BASH_VERSIYA: Bash ning odam o'qishi mumkin bo'lgan shakli.
  • BASH_VERSINFO: Bash ning mashinada o'qiladigan versiyasi.
  • USTUNLAR: Ustunlardagi chiqish kengligini belgilaydi.
  • DIRSTACK: Pushd va popd buyruqlari uchun foydalanish mumkin bo'lgan kataloglar to'plami.
  • HISTFILIZE: Buyruqlar tarixi faylidagi satrlarning maksimal soni.
  • HISTSIZE: Tarix ro'yxatida eslab qoladigan buyruqlar soni.
  • HOSTNAME: Joriy xost nomi.
  • IFS: Buyruqlar satrida ichki kiritish maydoni ajratuvchi. Standart bo'sh joy.
  • PS1: Boshlang'ich so'rov satrini belgilaydi - qobiq seansini boshlashda buyruq qatori turi. Agar buyruq bir nechta satrlarni qamrab olsa, PS2 o'zgaruvchisi ikkilamchi so'rov qatorini o'rnatadi.
  • SHELLOPTS: Set yordamida o'rnatilishi mumkin bo'lgan qobiq parametrlari.
  • UID: Joriy foydalanuvchi uchun noyob identifikator.

Qobiq va muhit o'zgaruvchilarini sozlash

Quyida qobiq va atrof-muhit o'zgaruvchilari o'rtasidagi farqni ko'rsatish va bu o'zgaruvchilarni sozlash sintaksisini tushuntirish uchun bir nechta misollar keltirilgan.

Shell o'zgaruvchilarni yaratish

Avval joriy seans uchun qobiq o'zgaruvchilarini o'rnatishingiz kerak. Bu juda sodda tarzda amalga oshiriladi, faqat nom va qiymatni ko'rsatish kifoya. Yuqorida aytib o'tilganidek, bunday o'zgaruvchilarning nomlarini yozish uchun katta harflar ishlatiladi.

TEST_VAR="Salom dunyo!"

Ushbu misolda tirnoq qo'llaniladi, chunki qiymatda bo'sh joylar mavjud. Bundan tashqari, bu yerda siz bitta qo'shtirnoqdan foydalanishingiz kerak, chunki undov belgisi bash qobig'idagi maxsus belgi bo'lib, buyruqlar tarixiga kirish imkoniyatini beradi, agar u qochib ketmasa yoki bitta qo'shtirnoq ichiga qo'yilmasa.

Shunday qilib, olingan qobiq o'zgaruvchisi joriy seansda amal qiladi, lekin uning asosiy jarayonlariga o'tkazilmaydi.

Buni tekshirish uchun o'rnatilgan buyruqning natijasi bo'yicha grep buyrug'idan foydalaning:

o'rnatish | grep TEST_VAR
TEST_VAR="Salom dunyo!"

Printenv buyrug'i natijasida grepni ishga tushirish orqali bu o'zgaruvchining muhit o'zgaruvchisi emasligiga ishonch hosil qilishingiz mumkin:

printenv | grep TEST_VAR

Bu harakat hech qanday natija bermaydi.

Bu har qanday qobiq yoki muhit o'zgaruvchisining qiymatini ochish uchun ishlatilishi mumkin.

echo $TEST_VAR
Salom Dunyo!

Ko'rib turganingizdek, o'zgaruvchining qiymatiga kirish uchun $ belgisidan foydalanish kerak.

Shunga qaramay, natijada olingan o'zgaruvchi hech qanday bola jarayoniga o'tkazilmasligi kerak. Buni sinab ko'rish uchun joriy qobiq ichida yangi bash qobig'ini joylashtiring:

bash
echo $TEST_VAR

Agar siz bola qobig'ini kengaytirsangiz va o'zgaruvchining mazmunini ochishga harakat qilsangiz, hech narsa chop etilmaydi. Bu hamma narsa to'g'ri ishlayotganligini anglatadi.

Asl qobiqqa qaytish uchun exit yozing:

Atrof-muhit o'zgaruvchilarini yaratish

Endi qobiq o'zgaruvchisini muhit o'zgaruvchisiga aylantirib ko'ring. Bu o'zgaruvchini eksport qilish orqali amalga oshiriladi. Eksportni bajaradigan buyruq mos ravishda nomlanadi.

Bu buyruq qobiq o'zgaruvchisini muhit o'zgaruvchisiga aylantiradi. Har bir narsa to'g'ri bajarilganligini tekshirish uchun atrof-muhit o'zgaruvchilari ro'yxatini qayta ko'rib chiqishingiz mumkin:

printenv | grep TEST_VAR
TEST_VAR=Salom dunyo!

Endi bu o'zgaruvchi ushbu ro'yxatda ko'rsatiladi. Shuningdek, siz bolalar qobig'ini yana kengaytirishingiz mumkin:

bash
echo $TEST_VAR
Salom Dunyo!

Ajoyib! Bola qobig'i asl qobiqdan o'zgaruvchini oldi. Bola qobig'ini tark etishdan oldin yana bitta o'zgaruvchini eksport qilib ko'ring.

eksport NEW_VAR="Eksport sinovi"

O'zgaruvchi eksport qilinganligini tekshiring:

printenv | grep NEW_VAR
NEW_VAR=Eksport sinovi

Endi asl qobig'ingizga qayting:

Ushbu o'zgaruvchini ochish mumkinligini tekshiring:

Natija qaytarilmaydi

Buning sababi, muhit o'zgaruvchilari faqat bolalar jarayonlariga o'tkaziladi. Asosiy qobiqning muhit o'zgaruvchilarini o'rnatishning o'rnatilgan usuli yo'q. Ko'pgina hollarda, bu dasturlarning ular ishga tushirilgan operatsion muhitga xalaqit berishiga yo'l qo'ymaydi.

NEW_VAR o'zgaruvchisi ichki qobiq muhiti o'zgaruvchisi sifatida o'rnatildi. Bu o'zgaruvchi ushbu qobiq va uning asosiy qobiqlari va jarayonlari uchun amal qiladi. Foydalanuvchi asl qobiqqa qaytganidan so'ng, bu muhit yo'q qilindi.

O'zgaruvchilarni ko'chirish va tiklash

TEST_VAR o'zgaruvchisi hali ham muhit o'zgaruvchisi hisoblanadi. Uni yana qobiq o'zgaruvchisiga aylantirish uchun quyidagilarni yozing:

eksport -n TEST_VAR

Endi bu o'zgaruvchi endi muhit o'zgaruvchisi emas:

printenv | grep TEST_VAR

Bu yana qobiq o'zgaruvchisi:

o'rnatish | grep TEST_VAR
TEST_VAR="Salom dunyo!"

O'zgaruvchini to'liq tiklash uchun, u muhit yoki qobiq o'zgaruvchisi bo'lsin, unset buyrug'idan foydalaning:

Bunday o'zgaruvchi endi yo'qligiga ishonch hosil qiling:

Hech qanday natija chop etilmadi, chunki o'zgaruvchi qayta o'rnatildi.

Atrof-muhit o'zgaruvchilarini avtomatik sozlash

Yuqorida aytib o'tilganidek, ko'plab dasturlar qanday ishlashi kerakligini aniqlash uchun muhit o'zgaruvchilaridan foydalanadi. Har safar yangi qobiq yaratilganda kerakli o'zgaruvchilarni o'rnatish juda noqulay. Bundan tashqari, ko'plab o'zgaruvchilar tizimga kirgandan so'ng darhol o'rnatiladi. O'zgaruvchilarni avtomatik ravishda qanday sozlash mumkin?

Bu birinchi qarashda ko'rinadiganidan biroz murakkabroq, chunki bash qobig'i juda ko'p konfiguratsiya fayllarini o'qiydi.

Shell seanslarining turlari

Bash qobig'i seans qanday boshlanganiga qarab turli xil konfiguratsiya fayllarini o'qiydi. Qobiqni belgilaydigan dastlabki ikki turdagi seanslar boshlang'ich va boladir.

Boshlang'ich yoki boshlang'ich qobiq(login shell) - foydalanuvchi avtorizatsiyasidan keyin ochiladigan qobiq seansi. Agar foydalanuvchi terminalga kirsa yoki SSH yordamida autentifikatsiya qilsa, ishga tushirish qobig'i ochiladi.

Agar yangi seans avtorizatsiya qilingan (boshlash) seansdan boshlangan bo'lsa (avvalgi misollarda yangi bash shell ishga tushirilgani kabi), bu seans bo'ladi. sho'ba korxonasi (bo'lmagantizimga kirish qobiq). Ushbu seansni ochish uchun avtorizatsiya jarayonidan o'tishingiz shart emas.

Bundan tashqari, qobiq seanslari interaktiv yoki interaktiv bo'lmagan bo'lishi mumkin.

Interaktiv sessiya qobiq (interaktiv qobiq) - terminalga bog'langan seans. Interaktiv bo'lmagan qobiq sessiyasi terminal bilan bog'lanmagan seansdir.

Shunday qilib, qobiq seanslari quyidagi jihatlarga ko'ra tasniflanadi: boshlang'ich-child, interaktiv-interaktiv.

SSH yordamida ochilgan oddiy seans odatda interaktiv boshlash seansidir. Buyruqlar qatori orqali ishlaydigan skript odatda interaktiv bo'lmagan bolalar seansida ishlaydi. Terminal seansi bu ikki xususiyatning har xil birikmasidir.

Seansni boshlang'ich sessiya yoki bolalar seansi sifatida tasniflash orqali tizim qobiq seansini ishga tushirish uchun qaysi fayllarni o'qish kerakligini tushunadi.

Shunday qilib, birinchi navbatda ishga tushirish seansi /etc/profile faylidan konfiguratsiyalarni oladi. Keyin u foydalanuvchi tomonidan belgilangan konfiguratsiyalarni olish uchun foydalanuvchining uy katalogidan boshlang'ich qobiq konfiguratsiya faylini qidiradi.

Ushbu seans ~/.bash_profile, ~/.bash_login va ~/.profile fayllarini o'qiydi va boshqa fayllarni o'qimaydi.

Bola seansi o'z navbatida /etc/baash.bashrc ni o'qiydi, keyin esa muhitni joylashtirish uchun foydalanuvchining ~/.bash.rc faylini o'qiydi.

Interaktiv bo'lmagan qobiqlar yangi muhit yaratish uchun BASH_ENV muhit o'zgaruvchisini va belgilangan faylni o'qiydi.

Atrof-muhit o'zgaruvchilari qanday o'rnatiladi

Ko'rib turganingizdek, konfiguratsiyalar turli xil fayllar bo'ylab tarqalgan.

Bu tizimni juda moslashuvchan qiladi, bu siz boshlang'ich va bolalar chig'anoqlari uchun turli parametrlarni o'rnatishingiz kerak bo'lgan muayyan holatlarda foydalidir. Biroq, bu qobiqlar odatda bir xil sozlamalardan foydalanadi.

Yaxshiyamki, ko'pchilik Linux distributivlari boshlang'ich qobiq konfiguratsiyalarining manbai sifatida bolalar qobig'ining konfiguratsiya fayliga ishora qiladi. Bu degani, siz har ikkala seans uchun muhit o'zgaruvchilarini bolalar qobig'ining konfiguratsiya fayllarida belgilashingiz mumkin.

Odatda, ikkala qobiq ham foydalanuvchi tomonidan belgilangan muhit o'zgaruvchilaridan foydalanadi. Bu shuni anglatadiki, siz ushbu o'zgaruvchilarni ~/.bashrc faylida o'rnatishingiz mumkin.

Ushbu faylni oching:

Ehtimol, u allaqachon ba'zi ma'lumotlarni o'z ichiga oladi. Bu erda o'rnatilgan qiymatlarning aksariyati bash parametrlari va atrof-muhit o'zgaruvchilari bilan hech qanday aloqasi yo'q. Ushbu fayldagi o'zgaruvchilar buyruq satridagi kabi o'rnatiladi:

eksport VARNAME=qiymat

Barcha kerakli o'zgaruvchilarni kiritgandan so'ng, faylni yoping. Keyingi safar qobiq seansini boshlaganingizda, bu erda o'rnatilgan o'zgaruvchilar o'qiladi va qobiq muhitiga o'tkaziladi. Joriy seansga berilgan faylni o'qishni aytish uchun quyidagilarni kiriting:

manba ~/.bashrc

Tizim bo'ylab o'zgaruvchilarni o'rnatish uchun ularni /etc/profile, /etc/bash.bashrc yoki /etc/environment-ga qo'shing.

Natijalar

Shell va atrof-muhit o'zgaruvchilari har doim barcha qobiq seanslarida mavjud, shuning uchun ular bilan qanday ishlashni bilish ayniqsa foydalidir. Ular asosiy jarayonlar konfiguratsiyasini bolalar jarayonlariga o'tkazish, shuningdek, fayllardan tashqari sozlamalarni sozlash uchun ishlatilishi mumkin.

Bu muayyan vaziyatlarda bir qator afzalliklarni beradi. Masalan, ba'zi joylashtirish mexanizmlari autentifikatsiya ma'lumotlarini sozlash uchun muhit o'zgaruvchilariga tayanadi. Bu qulay, chunki bunday muhim ma'lumotlar hech qanday faylda saqlanmaydi, ya'ni u begonalardan ishonchli himoyalanadi.

O'zgaruvchilarni o'qish yoki tizim muhitini o'zgartirish kerak bo'lishi mumkin bo'lgan yana ko'p boshqa holatlar mavjud. Ushbu qo'llanmada tasvirlangan vositalar va usullar o'zgaruvchilar bilan ishlash va ulardan to'g'ri foydalanish ko'nikmalaringizni rivojlantirish uchun ajoyib asos bo'lib xizmat qiladi.

Teglar: ,

Linuxdagi muhit o'zgaruvchilari qobiq tomonidan aniqlangan va dasturlar tomonidan ish vaqtida ishlatiladigan maxsus o'zgaruvchilardir. Ular tizim va foydalanuvchi tomonidan belgilanishi mumkin. Linux tizimi muhiti o'zgaruvchilari tizim tomonidan aniqlanadi 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. Seans tugagandan so'ng ular butunlay o'chiriladi, xoh masofaviy kirish, xoh 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 tizim konfiguratsiya fayllaridan yuklanadi: /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 olib tashlash

Keling, /etc/bash.profile ga qo'shish orqali masofaviylardan tashqari barcha terminal seanslarida barcha foydalanuvchilar uchun mavjud bo'lgan o'zgaruvchi yarataylik:

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 masofadan turib ham, mahalliy seanslar uchun ham foydalanish mumkin boʻlishi uchun qoʻshishingiz kerak 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

2.2. Atrof-muhit o'zgaruvchilari

Operatsion tizim deb nomlangan resursning maxsus turini qo'llab-quvvatlaydi Atrof-muhit o'zgaruvchilari (atrof-muhit o'zgaruvchilari). Bu o'zgaruvchilar juftlikdir NAME - VALUE . Ism harf bilan boshlanishi mumkin va harflar, raqamlar va pastki chiziqdan iborat.

Buyruqlar satrida oʻzgaruvchining qiymatini almashtirish uchun oʻzgaruvchi nomi oldiga $ belgisini qoʻying:

$ echo $USER mehmon

Agar o'zgaruvchi o'rnatilmagan bo'lsa, bo'sh qator qaytariladi.

O'zgaruvchining qiymatini belgilash uchun tayinlash operatoridan foydalaning (Bourne o'xshash qobiqlar uchun):

$TEST=test

yoki o'rnatilgan to'plam operatori (C-ga o'xshashlar uchun):

$ TEST=testni belgilang

Set buyrug'i argumentlarsiz muhitda o'rnatilgan barcha o'zgaruvchilarning qiymatlarini sanab o'tadi:

$ CET CLUNNS = 197 CVS_RSH = SSH Dirstach = () euid = 1000 guruh = () g_wilency_filenes = 1000 uy / Mehmonlar / mehmon =$" \t\n" INPUTRC=/etc/inputrc KDEDIR=/usr KDEDIRS=/home/guest/.local/ KDE_IS_PRELINKED=1 KDE_NO_IPV6=1 LANG=ru_RU.UTF-8 LESSOPEN="|/usr/bin/ lesspipe.sh %s" LINES=65 LOGNAME=mehmon ....

O'zgaruvchilar ma'lum bir jarayon uchun mahalliy yoki sessiya uchun global bo'lishi mumkin. Siz buyruqlarni chaqirish orqali o'zgaruvchilar uchun mahalliy qiymatlarni o'rnatishingiz mumkin:

$ TEST=test1 sh -c "echo $TEST" test1

Bourne o'xshash tarjimonlar (sh, ksh, bash, zsh, pdksh...) holatlarida tarjimonning o'rnatilgan env buyrug'ini va ishda printenv ni chaqirish orqali seans uchun o'zgaruvchilar to'plamining mazmunini baholashingiz mumkin. C-Shell klon tarjimonlari (csh, tcsh. ..):

$ env HOSTNAME=myhost TERM=xterm SHELL=/bin/bash HISTSIZE=1000 KDE_NO_IPV6=1 SSH_CLIENT=172.16.0.9 50487 22 QTDIR=/usr/lib/qt-3.3 QTINC=/usr/TT_in/scl3/SH_in. =/dev/pts/6 USER=mehmon MOZILLA_CERTIFICATE_FOLDER=/home/guest/.evolution/ KDEDIR=/usr MAIL=/var/spool/mail/guest PATH=/usr/games:/usr/local/bin:/bin :/usr/bin:/home/guest/bin INPUTRC=/etc/inputrc PWD=/home/guest KDE_IS_PRELINKED=1 LANG=ru_RU.UTF-8 KDEDIRS=/home/guest/.local/ SSH_ASKPASS=/usr/libexec /openssh/gnome-ssh-askpass SHLVL=1 HOME=/home/mehmon LOGNAME=mehmon QTLIB=/usr/lib/qt-3.3/lib CVS_RSH=ssh SSH_CONNECTION=172.16.0.9 50487 172.0.9 50487 172.ENSS/EN. /bin/lesspipe.sh %s G_BROKEN_FILENAMES=1 _=/bin/env

Buyruqlar to'plami Shell skriptlar deb ataladigan buyruq fayllariga kompilyatsiya qilinishi mumkin, bu erda sharhning maxsus turidagi birinchi qator ushbu to'plamni bajarish uchun buyruq tarjimonini belgilaydi. Masalan, matn muharririda test deb nomlangan quyidagi tarkibga ega fayl yarataylik:

#!/bin/sh echo TEST o'zgaruvchisi: echo $TEST

Ushbu dastur standart chiqishda "TEST o'zgaruvchisi:" matnli xabarini va agar belgilangan bo'lsa, TEST o'zgaruvchisining qiymatini chop etadi. Siz uni buyruq satridan buyruq tarjimoniga parametr sifatida o'tkazish orqali ishga tushirishingiz mumkin:

$sh test TEST o'zgaruvchisi:

Siz eksport (Bourne) yoki setenv (C-SHell) bayonotidan foydalanib global o'zgaruvchini yaratishingiz mumkin:

$ eksport TEST=test1 $ sh test TEST o'zgaruvchisi: test1

Belgilangan dasturni bajarish uchun o'zgaruvchilarning mahalliy qiymatlarini ulardan oldin buyruqlarni chaqirish orqali o'rnatishingiz mumkin:

$ TEST=test2 sh test TEST o'zgaruvchisi: test2

Atrof-muhit o'zgaruvchilarini o'chirish unset bayonoti yordamida amalga oshiriladi.

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 ishga tushirilganda 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, u qobiq qurilgan buyrug'i yordamida olib tashlanishi mumkin sozlanmagan.

Belgilangan qiymatlari bilan barcha o'rnatilgan qobiq o'zgaruvchilari to'plami atrof-muhit yoki qobiq muhiti deb ataladi. Buyruq yordamida uni 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. Taklifnoma yaratish uchun maxsus belgilar

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

24 soatlik formatdagi joriy vaqt: HH:MM:SS (soat:daqiqa:sekund)

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 boshqaruv belgilari 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 borligi sababli, tirnoq kerak)

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

standart taklif kvadrat qavs, foydalanuvchi nomi, belgini ko'rsatadi @ , kompyuter nomi, bo'sh joy, joriy katalog nomi (yo'lsiz), yopilish 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

Bu o'zgaruvchi buyruq satrini bajarish uchun ishga tushirishdan oldin qobiq tomonidan amalga oshiriladigan buyruq qatori konvertatsiyalarini so'zlarga bo'lish operatsiyasida ishlatiladigan ichki maydonni ajratuvchini belgilaydi. 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 shunday, jarayonni ishga tushirgan foydalanuvchining uy katalogining to'liq nomi (va yo'li) 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