Linux sistem je komplikovana životinja, i postoji mnogo toga što se treba
pamtiti, mnogo sitnih detalja koji ulaze u igru prilikom normalnih interakcija sa raznim
programima (ne morate ni biti svesni nekih od njih). Niko ne želi da daje gomilu
opcija svakom programu kojeg izvršava, govoreći mu koju vrstu terminala
koristi, ime računara, kako prompt treba da izgleda...
Pa, kao mehanizam preživljavanja, korisnici imaju nešto što se zove
okruženje. Okruženje definiše uslove pod kojima se izvršavaju
programi, a neke od ovih definicija su varijable; korsnik ih može promeniti i igrati
se njima, što je dobro samo u Linux sistemu. Skoro svaka školjka ima varijable
okruženja (ako ne, onda to verovatno i nije korisna školjka). Ovde ćemo
dati pregled komandi koje pruža bash za manipulaciju svojih varijabli
okruženja.
set pozvan tako će vam pokazati sve varijable
okruženja koje su trenutno definisane, kao i njihove vrednosti. Kao i većina
komandi ugrađenih u bash on može uraditi još
nekoliko stvari (sa parametrima); ipak ćemo to ostaviti bash(1) man stranici da objasni. Example 8-1 prikazuje isečak iz
set komande pokrenute na jednom od autorovih računara.
Primetite u ovom primeru PATH varijablu o kojoj je pre
diskutovano. Programi u bilo kojem od ovih direktorijuma se mogu pokrenuti ako ukucate
samo njihovo ime.
Example 8-1. Listanje varijabli okruženja sa set
% set
PATH=/usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:
/usr/openwin/bin:/usr/games:.:/usr/local/ssh2/bin:/usr/local/ssh1/bin:
/usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin
PIPESTATUS=([0]="0")
PPID=4978
PS1='\h:\w\$ '
PS2='> '
PS4='+ '
PWD=/home/logan
QTDIR=/usr/local/lib/qt
REMOTEHOST=ninja.tdn
SHELL=/bin/bash
|
unset će ukloniti svaku varijablu koju mu date,
brišući i varijablu i njenu vrednost; bash će
zaboraviti da je varijabla ikada postojala. (Ne brinite. Ukoliko nije nešto što
ste eksplicitno definisali u sesiji školjke, verovatno će biti opet definisana
u svakoj drugoj sesiji.)
% export VARIJABLA=neka_vrednost
|
Sad, export je istinski zgodan. Koristeći ga, dajete
varijabli okruženja VARIJABLA vrednost “neka_vrednost”; ukoliko VARIJABLA nije
postojala, sada postoji. Ukoliko je VARIJABLA već imala
vrednost, pa, nema je više. To nije baš najbolje ukoliko pokušavate da
dodate direktorijum u vaš PATH. U tom slučaju, verovatno
želite da koristite nešto kao ovo:
% export PATH=$PATH:/neki/nov/direktorijum
|
Primetite kako koristimo $PATH ovde: kada želite da bash interpretira varijablu (zameni je s njenom
vrednošću), ubacite $ pred početak imena
varijable. Na primer, echo $PATH će napisati vrednost
varijable PATH, u mom slučaju:
% echo $PATH
/usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:
/usr/openwin/bin:/usr/games:.:/usr/local/ssh2/bin:/usr/local/ssh1/bin:
/usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin
|
(Ovde opet sledi nešto cool.)
-
Interfejs komandne linije znači mnogo kucanja.
-
Kucanje je posao.
-
Niko ne voli posao.
Iz 3 i 2, možemo zaključiti da (4) niko ne voli kucanje. Srećom, bash nas čuva od (5) (niko ne voli interfejs komandne
linije).
Kako bash postiže ovaj divni zadatak, pitate vi? U
dodatak džokerima koje smo prodiskutovali pre, bash ima
osobinu tab popunjavanja
Tab popunjavanje radi nešto slično ovome: Vi kucate ime fajla. Može je
on u vašoj varijabli PATH, možda ga kucate eksplicitno.
Sve što treba da uradite je da ukucate dovoljno od imena da fajl bude jedinstven sa
tim slovima. Onda pritisnite taster tab. bash će razumeti
šta želite i završiti kucanje umesto vas!
Vreme je za primer. /usr/src ima dva poddirektorijuma: /usr/src/linux i /usr/src/sendmail. Ja
želim da vidim šta je u /usr/src/linux. Stoga samo
kucam ls /usr/src/l, pritisnem TAB
taster i bash mi daje ls
/usr/src/linux.
Sada, pretpostavimo da postoje dva direktorijuma /usr/src/linux i /usr/src/linux-old;
ukoliko ukucam /usr/src/l i pritisnuo TAB, bash će popuniti koliko god
može, i ja ću dobiti /usr/src/linux. Mogu tu stati,
ili mogu pritisnuti TAB opet i bash
će pokazati listu direktorijuma koji se poklapaju sa tim što sam do sad
ukucao.
Time manje kucanja (i samim tim, ljudima se mogu sviđati interfejsi komandne
linije). Rekao sam vam da je cool.