4.9. Shell буюу бүрхүүл
Өмнөх | Бүлэг 4. Юниксийн үндэс | Дараах

## 4.9. Shell буюу бүрхүүл

FreeBSD дээр маш олон ажил тушаал бичиж оруулдаг shell буюу бүрхүүл хэмээх орчинд хийгддэг. Бүрхүүлийн гол үүрэг нь гарнаас оруулсан тушаалыг гүйцэтгэх юм. Өдөр болгон гүйцэтгэхэд шаардагддаг файл зохицуулах, тушаал оруулагч мөрийг засварлах, тушаалын багц, орчны хувьсагч зэрэг туслах тушаалуудыг олон бүрхүүлүүд агуулж байдаг. FreeBSD нь `sh` буюу Bourne Shell, мөн `tcsh` буюу сайжруулсан C-shell зэрэг багц бүрхүүлүүдтэй хамт ирдэг. `zsh` болон `bash` зэрэг маш олон бүрхүүлүүд FreeBSD-ийн портын цуглуулганд ирдэг.

Та ямар бүрхүүл хэрэглэдэг вэ? Энэ бол тухайн хүний дур сонирхолтой хамаатай. Хэрэв та C програмын хэл дээр програм бичдэг бол C-тэй адилхан бичигддэг `tcsh` төрлийн бүрхүүлд дуртай болж болох юм. Хэрэв та Linux системээс ирсэн юм уу эсвэл UNIX®-ийн тушаалуудтай дөнгөж танилцаж байгаа шинэ хүн бол `bash` бүрхүүлээр эхлэх нь амар байж болох юм. Хамгийн гол нь бүрхүүл болгон өөрийн гэсэн онцгой шинж чанартай болохоор өөрийнхөө хүсэл зорилгод тааруулж бүрхүүлээ сонгож дадах нь чухал.

Бүрхүүлийн хамгийн энгийн чадвар бол файлын нэрийн автомат гүйцэтгэл юм. Тушаал юм уу файлын эхний хэдхэн үсгийг бичээд гарын Tab товчийг дарахад уг үсгээр эхэлсэн файлын нэрийг танд гүйцээж бичиж өгдөг. Энд нэг жишээ авч үзье. Танд `foobar` болон `foo.bar` гэсэн хоёр файл байгаа гэж бодъё. Та `foo.bar` файлыг устгахыг хүсэв. Тэгвэл та компьютерийнхаа гаран дээр ингэж бичих болно: `rm fo[Tab].[Tab]`.

Бүрхүүл танд ингэж харуулна `rm foo[BEEP].bar`.

[BEEP] гэдэг нь консолоос гаргаж байгаа хонхны дуу бөгөөд ингэж эхэлсэн файлын нэр нэгээс олон байгааг танд мэдэгдэж байгаа юм. `foobar` болон `foo.bar` хоёр хоёулаа `fo` гэж эхэлж байгаа ч гэсэн `foo` гэж танд дүүргэж өгдөг. Хэрэв та `.` гэж бичээд Tab дахин дарвал бүрхүүл танд уг хүссэн файлын тань нэрийг гүйцээж өгдөг.

Бүрхүүлийн бас нэг шинж чанар бол орчны хувьсагчийн хэрэглээ юм. Орчны хувьсагч гэдэг нь бүрхүүлийн орчинд хадгалагддаг, нэрэнд утга өгсөн хослол байдаг. Энэ бүрхүүлийн орчин нь уг бүрхүүлээс гүйцэтгэгдэж байгаа бүх програм болон програмын тохируулгад харагдаж байдаг. Байнга хэрэглэгддэг ерөнхий орчны хувьсагчдыг дор жагсааж тайлбарлав:

Хувьсагч | Тодорхойлолт
--- | ---
`USER` | Холбогдсон байгаа тухайн хэрэглэгчийн нэр.
`PATH` | Ачаалагдаж болдог хоёртын файлуудыг агуулдаг сангуудыг таслалаар тусгаарлаж бичсэн жагсаалт.
`DISPLAY` | Хэрэв холбогдох боломжтой бол, X11 дэлгэцийн сүлжээгээр холбогдох цэг.
`SHELL` | Хэрэглэж байгаа shell буюу бүрхүүл.
`TERM` | Хэрэглэгчийн терминалын төрлийн нэр. Терминалын шинж чанарыг тодорхойлоход хэрэглэгддэг.
`TERMCAP` | Төрөл бүрийн терминалуудад алгасах ёстой кодуудын өгөгдлийн бааз.
`OSTYPE` | Үйлдлийн системийн төрөл. жишээ нь, FreeBSD.
`MACHTYPE` | Системийн ажиллаж байгаа процессорын архитектур.
`EDITOR` | Хэрэглэгчийн эрхэмлэж хэрэглэгддэг текст засварлагч.
`PAGER` | Хэрэглэгчийн эрхэмлэж хэрэглэдэг пэйжер.
`MANPATH` | Таслалаар тусгаарлаж жагсаасан, гарын авлагын хуудсуудыг агуулсан хайх сангууд.

Бүрхүүл болгонд орчны хувьсагчаа өөр өөр тохируулдаг. Жишээлбэл, C-маягийн бүрхүүл `tcsh` болон `csh` дээр, та `setenv` тушаалыг ашиглаж орчны хувьсагчийг зааж өгдөг. Bourne төрлийн бүрхүүлүүд болох `sh` болон `bash` дээр, та `export` тушаалыг ашиглаж орчны хувьсагчийг зааж өгнө. Жишээ нь, орчны хувьсагч `EDITOR`-г өөрчлөх юм уу зааж өгөхийн тулд `csh` юм уу эсвэл `tcsh` бүрхүүл дээр `EDITOR` хувьсагчид `/usr/local/bin/emacs` утгыг өгөхийн тулд:

`%` `setenv EDITOR /usr/local/bin/emacs`

Bourne бүрхүүлүүд дээр:

`%` `export EDITOR="/usr/local/bin/emacs"`

Ихэнх бүрхүүлийн орчны хувьсагчийн утгыг харахын тулд хувьсагчийн нэрний урд `$` тэмдгийг хэрэглэж харна. Жишээ нь, `echo $TERM` гэсэн тушаал нь `$TERM` хувьсагчид ямар утга байгааг консол дээр харуулна. Учир нь, бүрхүүл `$TERM` дотор буй утгыг `echo` тушаалд дамжуулж өгснөөр консол дээр харуулагддаг.

Бүрхүүл маш олон тэмдэгтийг тусгай зориулалтаар өгөгдлийг илэрхийлэхдээ хэрэглэдэг бөгөөд тэдгээр тэмдэгтийг мета-тэмдэгтүүд гэж нэрлэдэг. Байнга хэрэглэгддэг тэмдэгтийн нэг нь `*` юм. Энэ тэмдэгт нь файлын нэрэнд байгаа тэмдэгтүүдийг хэд ч байсан хамаагүй орохыг илэрхийлдэг. Тэдгээр мета-тэмдэгтүүд нь файлын нэрийг орлуулахад байнга хэрэглэгддэг. Жишээлбэл, `echo *` гэсэн тушаал нь `ls` тушаалтай ижилхэн үүрэг гүйцэтгэх бөгөөд, яагаад гэвэл бүрхүүл нь `*` тэмдэгтэд тохирох бүх файлуудыг авч `echo` тушаал руу дамжуулж харуулдаг.

Бүрхүүл дээр мета-тэмдэгтүүдийг хэрэв тухайн онцгой тохиолдлоор нь биш харин зүгээр тэмдэгт хэлбэрээр нь хэрэглэхийг хүсвэл, уг тэмдэгтийн урд ташуу зураасыг (`\`) бичиж өгдөг. `echo $TERM` гэсэн тушаал нь ямар терминал заагдсан байгааг харуулна. Харин `echo \$TERM` тушаал нь ердөө `$TERM` гэж харуулна.

### 4.9.1. Өөрийнхөө бүрхүүлийг солих

Бүрхүүлээ буюу shell-ээ солих хамгийн амархан арга бол `chsh` тушаалыг хэрэглэх юм. `chsh` тушаал нь таныг `EDITOR` орчны хувьсагчид заагдсан засварлагч уруу оруулдаг бөгөөд хэрэв энэ хувьсагчид утга заагдаагүй байвал шууд `vi` засварлагчийг ажиллуулдаг. Тэгээд та «Shell:» мөрөнд буй утгыг өөрчилж бүрхүүлээ өөрчилнө.

Та мөн `chsh` тушаалыг `-s` сонголттой хэрэглэж болох бөгөөд ингэсэн үед нэмэлт засварлагч нээлгүйгээр шууд бүрхүүлийг өөрчилдөг. Жишээ нь та өөрийнхөө бүрхүүлийг `bash` бүрхүүлээр солихыг хүсвэл дараа тушаалыг өгөх болно:

`%` `chsh -s /usr/local/bin/bash`

### Тэмдэглэл:

Таны хэрэглэхийг хүсэж байгаа бүрхүүл тань `/etc/shells` файл дотор заавал байх ёстой. Хэрэв та портын цуглуулгаас бүрхүүл суулгасан бол энэ нь автоматаар хийгдчихдэг. Харин та гар аргаар ямар нэг бүрхүүл суулгавал энэ файлд өөрөө нэмэх хэрэгтэй.

Жишээ нь та `bash` бүрхүүлийг гар аргаар суулгаад `/usr/local/bin` байршилд байрлуулсан бол дараах тушаалыг өгөх хэрэгтэй:

`#` `echo "/usr/local/bin/bash" >> /etc/shells`

Тэгээд дараа нь `chsh` тушаалыг хэрэглэх хэрэгтэй.

Өмнөх | Дээш | Дараах
4.8. Далд чөтгөр буюу дэмонууд, дохионууд, мөн процессуудыг зогсоох нь | Эхлэл | 4.10. Текст засварлагчид

Энэ болон бусад баримтуудыг ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ хаягаас татаж авч болно.

FreeBSD-ийн талаар <questions@FreeBSD.org> хаягтай холбоо барихаасаа өмнө баримтыг уншина уу.
Энэ бичиг баримттай холбоотой асуулт байвал <doc@FreeBSD.org> хаягаар цахим захидал явуулна уу.
Энэ бичиг баримтын орчуулгатай холбоотой асуулт байвал <admin@mnbsd.org> хаягаар цахим захидал явуулна уу.