IlmHamroh
JavaScript Full-stack/1-qism. Kompyuter, fayllar va terminal25/40-dars15 daqiqa
Mundarija (36)

Muhit o'zgaruvchilari va PATH: export, .bashrc va alias

Qisqacha: Shell'da o'zgaruvchi ism=Ali deb yaratiladi va $ism bilan o'qiladi. export uni muhit o'zgaruvchisiga aylantiradi — shundan keyin shu terminaldan ishga tushgan dasturlar ham uni ko'radi. PATH — buyruqlar qidiriladigan papkalar ro'yxati. Terminal har ochilganda bajariladigan sozlamalar (export, alias) ~/.bashrc (macOS'da ~/.zshrc) faylida saqlanadi va source ~/.bashrc bilan darhol yuklanadi.

Bu darsda

  • Shell o'zgaruvchisini yaratasiz, o'qiysiz va o'chirasiz.
  • Oddiy o'zgaruvchi bilan export qilingan muhit o'zgaruvchisi farqini misolda ko'rsata olasiz.
  • PATH ga papka qo'shasiz va dastur qayerdan ishga tushayotganini which bilan aniqlaysiz.
  • Sozlamalarni ~/.bashrc yoki ~/.zshrc ga yozib, doimiy qilasiz; source nima uchun kerakligini tushunasiz.
  • alias bilan uzun buyruqlarga qisqa nom berasiz.

Oldin bilishingiz kerak: Dastur o'rnatish va paket menejerlari (PATH va muhit o'zgaruvchisi qismi), Exit code va buyruqlarni zanjirlash, Oqimlar, pipe va yo'naltirish.

1. Nega bu kerak?

Paket menejerlari darsida ikki narsani ko'rgan edik. Muhit o'zgaruvchisi — operatsion tizim dasturlar uchun saqlab qo'yadigan "nom — qiymat" juftligi, xuddi uy kirishidagi e'lonlar taxtasi. PATH esa shunday o'zgaruvchilardan biri: terminal buyruqlarni qaysi papkalardan qidirishini aytadi. Oldingi darsda esa $? bilan tanishdik.

Endi uchta real muammoga duch kelamiz:

  1. Dasturga sozlama berish. Sizning veb-serveringiz 3000-portda ishlaydi. Ertaga u serverda 8080-portda ishlashi kerak. Kodni har safar o'zgartirasizmi? Yo'q — sozlamani dasturdan tashqarida, muhitda saqlaysiz.
  2. Sirlarni koddan uzoq tutish. Ma'lumotlar bazasi paroli kod ichida yozilsa, kodni ko'rgan har kim uni ham ko'radi. Parollar muhit o'zgaruvchilarida turadi.
  3. Terminalni o'zingizga moslash. Har kuni ls -lah yozasiz — uni ll ga qisqartirish mumkin. Lekin terminal yopilsa, sozlamalar yo'qoladi. Ularni qayerga yozish kerak?

Bu dars uchalasiga javob beradi.

2. Shell o'zgaruvchisi

2.1 Yaratish va o'qish

O'zgaruvchi (variable) — nom berilgan, ichida qiymat saqlanadigan joy. Ustiga nom yozilgan quti deb tasavvur qiling: qutiga narsa solasiz, keyin nomi bilan chaqirib olasiz.

Git Bash, WSL yoki macOS terminalida yozing:

bash
shahar="Toshkent"
echo "Men $shahar da yashayman"
text
Men Toshkent da yashayman

Ikki qoida:

  • Yaratishda $ yo'q: shahar="Toshkent".
  • O'qishda $ bor: $shahar. $ shell'ga "bu so'z emas, o'zgaruvchi — o'rniga qiymatini qo'y" deydi.

$ siz yozsangiz, shell uni oddiy so'z deb chiqaradi: echo shahar — shahar.

2.2 = atrofida bo'sh joy yo'q

Bu bash'dagi eng ko'p uchraydigan xato:

bash
shahar = "Toshkent"
text
bash: shahar: command not found

Nega? Buyruq anatomiyasi darsidan eslang: bo'sh joy — buyruq qismlarini ajratadi. Shell birinchi so'z shahar ni buyruq nomi, = va "Toshkent" ni esa argumentlar deb o'qidi. shahar degan dastur yo'q — 127-xato.

Qoida: nom=qiymat — hech qanday bo'sh joysiz. Qiymat ichida bo'sh joy bo'lsa — qo'shtirnoq: ism="Ali Valiyev".

2.3 O'zbekcha qo'shimchalar bilan: ${...}

O'zbek tilida so'zga qo'shimcha qo'shamiz: "Toshkentda", "Alining". Buni sinab ko'ring:

bash
echo "Men $shaharda yashayman"
text
Men  yashayman

Shahar nomi yo'qoldi! Shell $shaharda ni bitta o'zgaruvchi nomi deb o'qidi. Bunday o'zgaruvchi yo'q — bo'sh qator qo'ydi. Nom qayerda tugashini jingalak qavs bilan ko'rsatamiz:

bash
echo "Men ${shahar}da yashayman"
text
Men Toshkentda yashayman

${shahar} — $shahar ning o'zi, faqat chegarasi aniq. O'zgaruvchidan keyin darhol harf kelsa — doim ${...} ishlating.

2.4 O'chirish va harf kattaligi

  • unset shahar — o'zgaruvchini o'chiradi.
  • shahar va Shahar — ikki xil o'zgaruvchi. Harf kattaligi muhim.

Tekshirib ko'ring: narx=12000 dan keyin echo "${narx}so'm" va echo "$narxso'm" nima chiqaradi?

Javob

Birinchisi — 12000so'm. Ikkinchisi — faqat 'm: shell $narxso ni o'zgaruvchi nomi deb o'qidi (apostrof nomga kirmaydi), bunday o'zgaruvchi yo'q — o'rniga bo'sh qator qo'yildi. Qoida: o'zgaruvchidan keyin harf kelsa — ${narx}.

3. Muhit o'zgaruvchilari

3.1 Tizimda allaqachon bor o'zgaruvchilar

Siz hali hech narsa yaratmagan bo'lsangiz ham, shell'da o'nlab o'zgaruvchi tayyor turadi. Ularni env (environment — muhit) ko'rsatadi:

bash
env

Ekranga NOM=qiymat ko'rinishidagi o'nlab qator chiqadi. Kerakligini pipe darsidagidek grep bilan ajratamiz:

bash
env | grep "^HOME="
text
HOME=/home/ali

Sizda yo'l boshqacha bo'ladi (Git Bash'da masalan /c/Users/Ali). Bitta o'zgaruvchini ko'rishning qisqa yo'li ham bor — printenv HOME: faqat qiymatini chiqaradi.

Eng ko'p kerak bo'ladiganlari:

O'zgaruvchi Nima saqlaydi
HOME Uy papkangiz yo'li (~ aynan shu)
USER Foydalanuvchi nomi (Git Bash'da bo'sh bo'lishi mumkin — USERNAME ni ishlating)
PATH Buyruqlar qidiriladigan papkalar
SHELL Qaysi shell ishlatilayapti
PWD Joriy papka (pwd shu yerdan oladi)

Muhit o'zgaruvchilari nomi odatda KATTA harflarda yoziladi. O'zingiz yaratgan vaqtinchalik o'zgaruvchilarni kichik harflarda yozish odat — shunda ular tizimnikiga aralashmaydi.

3.2 Bola jarayon nimani ko'radi?

Endi eng muhim tushuncha. OS darsidan eslang: har ishga tushgan dastur — alohida jarayon. Siz terminalda buyruq yozganingizda shell o'sha dasturni yangi jarayon qilib ishga tushiradi. Bu yangi jarayon shell'ning bola jarayoni (child process) deyiladi, shell esa — uning ota jarayoni.

Sinab ko'rish uchun bitta usul kerak: bash -c '...' — yangi, bola bash ishga tushadi va qo'shtirnoq ichidagi buyruqni bajaradi. Qo'shtirnoq bittalik (') — shunda $PORT ni ota shell emas, aynan bola o'qiydi. Qo'shtirnoq turlari farqini shell skript darsida ko'ramiz.

bash
PORT=3000
echo "Ota shell: $PORT"
bash -c 'echo "Bola jarayon: [$PORT]"'
text
Ota shell: 3000
Bola jarayon: []

Bola jarayon PORT ni ko'rmadi — qavslar ichi bo'sh. Oddiy shell o'zgaruvchisi faqat shu shell'ning "ichki daftari"da turadi, bolalarga berilmaydi.

3.3 export — bolalarga ham ber

bash
export PORT
bash -c 'echo "Bola jarayon: [$PORT]"'
text
Bola jarayon: [3000]

export o'zgaruvchini muhit o'zgaruvchisiga aylantiradi. Endi shu shell'dan ishga tushgan har bir dastur — bash, node, git — uni ko'radi. Yaratish va eksport qilishni bitta qatorda ham yozish mumkin: export PORT=3000.

flowchart TD
  S["Ota shell<br/>PORT=3000 (oddiy)<br/>export API_URL=..."] --> B1["Bola: node server.js<br/>API_URL ni ko'radi<br/>PORT ni ko'rmaydi"]
  S --> B2["Bola: bash -c ...<br/>API_URL ni ko'radi<br/>PORT ni ko'rmaydi"]
  B1 -.-> X["Bola o'zgartirsa ham<br/>ota o'zgarmaydi"]

O'xshatish: oila kundaligi. Ota o'z daftariga yozgani (PORT=3000) — faqat o'zi uchun. Devordagi e'lonlar taxtasiga osgani (export) — uyga kirgan har bir bola ko'radi. Bola esa taxtadagi yozuvning nusxasini oladi: o'z nusxasini o'zgartirsa, otaning taxtasi o'zgarmaydi.

JavaScript'da (Node.js) muhit o'zgaruvchisi process.env.PORT deb o'qiladi — buni Node.js darsida ko'rasiz. Hozir shuni biling: dastur faqat export qilingan o'zgaruvchini ko'ra oladi.

3.4 Bir martalik o'zgaruvchi

Faqat bitta buyruq uchun qiymat berish kerak bo'lsa, uni buyruqning oldiga yozasiz:

bash
SHAHAR=Buxoro bash -c 'echo "Bir martalik: $SHAHAR"'
echo "Keyin: [$SHAHAR]"
text
Bir martalik: Buxoro
Keyin: []

SHAHAR faqat o'sha buyruqqa berildi va shell'da qolmadi. Real loyihalarda shunday qatorni uchratasiz: PORT=8080 npm start — "serverni bu safar 8080-portda ishga tushir".

Tekshirib ko'ring: KALIT=abc yozildi (export'siz). Keyin shu terminalda node app.js ishga tushirildi. Dastur KALIT ni ko'radimi?

Javob

Yo'q. node — shell'ning bola jarayoni, oddiy shell o'zgaruvchisi esa bolalarga o'tmaydi. export KALIT=abc yoki bir martalik KALIT=abc node app.js kerak.

4. PATH chuqurroq

4.1 PATH'ni o'qish

bash
echo $PATH
text
/usr/local/bin:/usr/bin:/bin:/home/ali/.local/bin

Papkalar : bilan ajratilgan (Windows'da ; bilan). Uzun qatorni o'qish qiyin — tr (translate — belgini almashtirish) bilan har : ni yangi qatorga aylantiramiz:

bash
echo $PATH | tr ':' '\n'
text
/usr/local/bin
/usr/bin
/bin
/home/ali/.local/bin

Shell buyruqni shu papkalardan tartib bilan qidiradi va birinchi topganini ishga tushiradi.

4.2 Dastur qayerdan ishlayapti?

bash
which git
text
/usr/bin/git

which PATH bo'ylab qidirib, qaysi fayl ishga tushishini ko'rsatadi. "Yangi versiyani o'rnatdim, lekin eskisi ishlayapti" degan holatda birinchi yozadigan buyruq — shu.

which faqat PATH'dagi dasturlarni biladi. Shell'ning ichki buyruqlari va alias'lar uchun buyruq anatomiyasi darsidagi type yaxshiroq:

bash
type cd
type ls
text
cd is a shell builtin
ls is /usr/bin/ls

4.3 PATH'ga papka qo'shish

Aytaylik, o'zingizning kichik dasturlaringizni ~/bin papkasida saqlaysiz va ularni istalgan joydan nomi bilan chaqirmoqchisiz:

bash
export PATH="$HOME/bin:$PATH"

Bo'laklaymiz:

  • $HOME/bin — yangi papka.
  • : — ajratgich.
  • $PATH — eski ro'yxatning hammasi.
  • Natija PATH ga qayta yoziladi va export qilinadi.

Ya'ni: "yangi papka + eski ro'yxat". Yangi papka boshida turgani uchun shell avval unga qaraydi. Oxiriga qo'shish ham mumkin: "$PATH:$HOME/bin" — unda u eng oxirida tekshiriladi.

Diqqat: $PATH ni yozishni unutsangiz — export PATH="$HOME/bin" — eski ro'yxat butunlay o'chadi. Endi ls, git, hatto mkdir ham command not found beradi. Qo'rqmang: bu faqat shu terminal oynasi uchun. Oynani yopib, yangisini oching — PATH tiklanadi.

Windows'da PATH'ni doimiy o'zgartirish grafik oyna orqali bo'ladi — paket menejerlari darsida ko'rgan edik.

Tekshirib ko'ring: export PATH="/opt/node/bin:$PATH" dan keyin /opt/node/bin da ham, /usr/bin da ham node bor. node yozilsa, qaysi biri ishga tushadi? Buni qanday tekshirasiz?

Javob

/opt/node/bin dagisi — u ro'yxat boshida turibdi, shell birinchi topganini ishga tushiradi. Tekshirish: which node.

5. Sozlamalarni doimiy qilish: .bashrc va .zshrc

5.1 Muammo

export PORT=3000 ni yozdingiz, terminalni yopdingiz, qayta ochdingiz — echo $PORT bo'sh. Hamma o'zgaruvchi va sozlama shell jarayonining xotirasida yashaydi. Jarayon tugadi — ular ham yo'qoldi.

5.2 Yechim: shell har ochilganda o'qiydigan fayl

Shell ishga tushganda uy papkangizdagi maxsus faylni o'qiydi va ichidagi buyruqlarni birma-bir bajaradi. U yerga yozilgan export va alias har yangi oynada o'zi bajariladi.

Qayerda Shell Fayl
Ubuntu, WSL bash ~/.bashrc
macOS zsh ~/.zshrc
Git Bash bash ~/.bashrc (~/.bash_profile orqali)

Fayl nomi nuqta bilan boshlanadi — demak u yashirin. ls -a ~ bilan ko'rinadi. Nomdagi "rc" — eski "run commands" (ishga tushirish buyruqlari) iborasidan qolgan.

Yana bir fayl uchrashi mumkin — ~/.profile (yoki ~/.bash_profile). U tizimga kirishda bir marta o'qiladi. Boshlovchi uchun oddiy qoida: o'z sozlamalaringizni ~/.bashrc ga (macOS'da ~/.zshrc ga) yozing.

Maslahat: Git Bash ~/.bashrc ni to'g'ridan-to'g'ri emas, ~/.bash_profile orqali o'qiydi. Siz faqat .bashrc yaratsangiz, Git Bash keyingi ochilishda qizil WARNING: Found ~/.bashrc but no ~/.bash_profile... yozuvini chiqaradi. Qo'rqmang: u o'zi .bash_profile yaratib, muammoni hal qiladi. Keyingi safar ogohlantirish chiqmaydi.

5.3 Faylga yozish

Eng oddiy yo'l — oqimlar darsidagi >>:

bash
echo 'export PORT=3000' >> ~/.bashrc

Tashqarida bittalik qo'shtirnoq: faylga $ belgilari o'zgarmasdan, aynan shunday yozilsin. Ikki narsaga ehtiyot bo'ling:

  • Faqat >>! Bitta > butun .bashrc ni o'chirib yuboradi.
  • Faylni muharrirda ochish ham mumkin: nano ~/.bashrc (Linux, WSL va Git Bash'da bor; saqlash — Ctrl + O, Enter, chiqish — Ctrl + X). VS Code o'rnatgan bo'lsangiz — code ~/.bashrc.

5.4 source — hozirning o'zida yuklash

Faylni o'zgartirdingiz, lekin ochiq terminal buni bilmaydi — u faylni faqat ochilganda o'qigan edi. Ikki yo'l bor: terminalni yopib qayta ochish yoki:

bash
source ~/.bashrc

source faylni joriy shell ichida bajaradi. Qisqa shakli — nuqta: . ~/.bashrc.

Nega bash ~/.bashrc emas? Chunki bash bola jarayon ochadi. Fayl o'sha bolada bajariladi, bola tugaydi — va barcha export lar u bilan birga yo'qoladi. 3-bo'limdagi qoidani eslang: bola otaga ta'sir qilmaydi.

bash
echo 'export MEVA=olma' > sozlama.sh
bash sozlama.sh
echo "bash bilan: [$MEVA]"
source sozlama.sh
echo "source bilan: [$MEVA]"
text
bash bilan: []
source bilan: [olma]

Tekshirib ko'ring: Malika ~/.zshrc ga export API_URL=https://example.com qo'shdi va shu terminalda darhol echo $API_URL yozdi. Natija bo'sh. Nima qilish kerak?

Javob

source ~/.zshrc (yoki terminalni qayta ochish). Ochiq shell .zshrc ni faqat ishga tushganda o'qigan — keyingi o'zgarishlarni bilmaydi.

6. alias — buyruqqa qisqa nom

Alias (taxallus) — uzun buyruqqa siz bergan qisqa nom. Telefondagi "tezkor raqam"ga o'xshaydi: 1 ni bossangiz, onangizning raqami teriladi.

bash
alias ll='ls -lah'
ll

Endi ll yozsangiz, shell uni ls -lah ga almashtirib bajaradi. Qoidalar o'zgaruvchidagidek: = atrofida bo'sh joy yo'q, buyruq qo'shtirnoq ichida.

Buyruq Nima qiladi
alias Barcha alias'lar ro'yxati
type ll ll is aliased to `ls -lah'
unalias ll Alias'ni o'chiradi

Dasturchilar ko'p yozadigan alias'lar:

bash
alias ll='ls -lah'
alias gs='git status'
alias ..='cd ..'

Alias ham faqat shu terminalda yashaydi. Doimiy qilish — .bashrc ga yozish va source:

bash
echo "alias ll='ls -lah'" >> ~/.bashrc
source ~/.bashrc

Bu safar tashqarida ikkitalik, ichida bittalik qo'shtirnoq. Ichida $ yo'q — shuning uchun ikkitalik qo'shtirnoq xavfsiz.

Maslahat: Alias'ni mavjud buyruq nomi bilan atamang (masalan, alias ls='rm'). O'zingizni chalg'itasiz, boshqa odam esa sizning terminalingizda umuman adashadi.

7. Sirlar va xavfsizlik

Muhit o'zgaruvchilari parollarni koddan ajratadi — lekin ularni ham ehtiyot qilish kerak:

  • Tarix. Terminalda yozgan har bir buyruq tarixga tushadi (harakatlanish darsidagi ↑ va Ctrl + R o'shani ko'rsatadi). export PAROL=... yozsangiz, parol ~/.bash_history faylida qoladi.
  • Ekran rasmi. env natijasini skrinshot qilib guruhga tashlash — undagi hamma kalitlarni tarqatish degani.
  • .bashrc ni ulashish. Sozlamalaringizni GitHub'ga qo'ymoqchi bo'lsangiz, avval ichida parol yo'qligini tekshiring.

Real loyihalarda sirlar .env degan alohida faylda saqlanadi va Git'ga qo'shilmaydi. Uni YAML, TOML va .env darsida o'rganamiz.

8. PowerShell'da qanday?

PowerShell'da muhit o'zgaruvchilari $env: bilan boshlanadi:

Vazifa bash PowerShell
O'qish echo $HOME $env:USERPROFILE
Yaratish export PORT=3000 $env:PORT = "3000"
Ro'yxat env Get-ChildItem Env:
Sozlama fayli ~/.bashrc $PROFILE

PowerShell'da $env:PORT = "3000" ham faqat shu oyna uchun. Windows'da oddiy o'zgaruvchini doimiy qilishning bir yo'li — setx PORT 3000. U qiymatni Windows sozlamalariga yozadi, lekin faqat keyin ochilgan oynalar uni ko'radi; joriy oynada $env:PORT o'zgarmaydi. PATH uchun esa setx ishlatilmaydi — sababini PowerShell darsida ko'rasiz.

9. Ko'p uchraydigan xatolar

9.1 = atrofida bo'sh joy

text
bash: PORT: command not found

PORT = 3000 yozilgan. Shell PORT ni buyruq deb o'qidi. PORT= 3000 (faqat o'ngda bo'sh joy) esa boshqacha xato beradi: bash: 3000: command not found — shell PORT ni bo'sh qiymat bilan belgilab, 3000 ni buyruq sifatida ishga tushirmoqchi bo'ldi. Tuzatish: PORT=3000.

9.2 export ni unutish

Siz API_URL=... yozdingiz, dastur esa "API_URL topilmadi" deyapti. Shell'da echo $API_URL ishlaydi, lekin dasturda yo'q. Sababi — bola jarayon oddiy o'zgaruvchini ko'rmaydi. Tuzatish: export API_URL=....

9.3 PATH'ni buzish

text
bash: ls: command not found

ls kabi oddiy buyruq ham topilmayapti — demak PATH ustidan yozilgan ($PATH qismi unutilgan). Tuzatish: terminalni yopib qayta oching. Xato .bashrc ga yozilgan bo'lsa, yangi oynada ham takrorlanadi. Unda muharrirni to'liq yo'li bilan oching (masalan /usr/bin/nano ~/.bashrc) va qatorni tuzating.

9.4 .bashrc ni o'zgartirib, source qilmaslik

"Alias qo'shdim — ishlamayapti!" — bash: ll: command not found. Fayl o'zgardi, lekin ochiq shell uni qayta o'qimadi. Tuzatish: source ~/.bashrc.

9.5 macOS'da .bashrc ga yozish

macOS 2019-yildan beri zsh ishlatadi va .bashrc ni umuman o'qimaydi. Sozlamalar ishlamasa — echo $SHELL bilan tekshiring. /bin/zsh bo'lsa, ~/.zshrc ga yozing.

10. Mashqlar

1-mashq (oson): To'ldiring

  • ism o'zgaruvchisiga Jasur ni yozish: ismJasur
  • Uni ekranga chiqarish: echo
  • Bola jarayonlar ham ko'rishi uchun: ism
  • .bashrc dagi o'zgarishni darhol yuklash: ~/.bashrc
Yechim
bash
ism=Jasur
echo $ism
export ism
source ~/.bashrc

= atrofida bo'sh joy yo'q. O'qishda $ kerak. export — bolalarga berish. source — faylni joriy shell'da bajarish.

2-mashq (o'rta): Salomlashuvchi terminal

Shunday qiling: har safar terminal ochilganda Xush kelibsiz, <ismingiz>! degan yozuv chiqsin va ll alias'i ishlasin. Ikki buyruq bilan .bashrc ga (macOS'da .zshrc ga) yozing, keyin yangi terminal ochmasdan tekshiring.

Ishora: .bashrc ichidagi buyruqlar oddiy buyruqlar kabi bajariladi — echo ham.

Yechim
bash
echo 'echo "Xush kelibsiz, Aziz!"' >> ~/.bashrc
echo "alias ll='ls -lah'" >> ~/.bashrc
source ~/.bashrc
text
Xush kelibsiz, Aziz!

source faylni bajardi — salomlashuv darhol chiqdi. Endi ll ham ishlaydi. Yangi oyna ochsangiz, salomlashuv o'zi chiqadi.

Ikkala qatorda ham faqat >> — bitta > faylning oldingi sozlamalarini o'chirib yuborardi. Birinchi qatorda tashqi qo'shtirnoq bittalik: shunda faylga ichki echo "..." aynan shunday yoziladi.

3-mashq (qiyin): Nega ko'rinmaydi?

Ali shunday yozdi:

bash
DB_NOMI=dokon
bash -c 'echo "Baza: $DB_NOMI"'
echo "Baza: $DB_NOMIning jadvallari"

Natija:

text
Baza: 
Baza:  jadvallari

Ikkala qatordagi muammoni toping va tuzating. Natija Baza: dokon va Baza: dokonning jadvallari bo'lsin.

Yechim
  1. bash -c — bola jarayon. DB_NOMI export qilinmagan, shuning uchun bola uni ko'rmadi.
  2. $DB_NOMIning — shell DB_NOMIning degan (yo'q) o'zgaruvchini qidirdi.
bash
export DB_NOMI=dokon
bash -c 'echo "Baza: $DB_NOMI"'
echo "Baza: ${DB_NOMI}ning jadvallari"
text
Baza: dokon
Baza: dokonning jadvallari

11. Real ishda

  • Server sozlamalari. Bitta kod kompyuteringizda PORT=3000 bilan, serverda PORT=80 bilan ishlaydi. Kod o'zgarmaydi — faqat muhit.
  • Sirlar. Ma'lumotlar bazasi manzili, to'lov tizimi (Click, Payme) kalitlari — hammasi muhit o'zgaruvchilarida. Kodda — faqat process.env.PAYME_KEY kabi nom.
  • "Menda ishlaydi, senda yo'q". Ko'pincha sababi — boshqa PATH yoki yetishmayotgan muhit o'zgaruvchisi. which node va env | grep ... — birinchi tekshiruvlar.
  • Dotfiles. Tajribali dasturchilar .bashrc, .zshrc kabi sozlama fayllarini (ularni "dotfiles" deyishadi) GitHub'da saqlaydi va yangi kompyuterda bir daqiqada o'z muhitini tiklaydi.
  • Intervyu. "Muhit o'zgaruvchisi nima va nega parolni kodga yozmaymiz?", "export nima qiladi?" — backend va DevOps intervyularida so'raladi.

Xulosa

  • O'zgaruvchi: nom=qiymat (bo'sh joysiz), o'qish — $nom, qo'shimcha bilan — ${nom}da.
  • export o'zgaruvchini muhitga chiqaradi — bola jarayonlar (dasturlar) faqat shuni ko'radi.
  • PATH — buyruqlar qidiriladigan papkalar; qo'shish: export PATH="$HOME/bin:$PATH"; tekshirish: which.
  • Doimiy sozlamalar — ~/.bashrc (macOS: ~/.zshrc); o'zgarishni yuklash — source ~/.bashrc.
  • alias ll='ls -lah' — uzun buyruqqa qisqa nom.
  • Parollarni tarixga va skrinshotlarga tushirmang.

Keyingi dars: Jarayonlar va band portlar — ishlayotgan dasturlarni ko'rish, to'xtatish va port already in use xatosini hal qilishni o'rganamiz.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
Muhit o'zgaruvchilari va PATH: export, .bashrc va alias — IlmHamroh