Linux-ový systém je komplikovaná potvora. Je treba na veľa vecí dávať pozor, na mnoho detailov, ktoré vstupujú do hry pri vašej práci s rôznymi programami (pričom o niektorých z nich ani nemusíte vedieť). Nikomu sa nechce zadávať množstvo parametrov každému programu, ktorý sa spustí, hovoriť mu, ktorý terminál má použiť, meno počítača, ako by mal vyzerať prompt ...
Takže užívatelia majú mechanizmus, ktorý sa s tým všetkým vysporiada a ktorý sa nazýva prostredie. Prostredie definuje podmienky, v ktorých sa programy spúšťajú a niektoré z týchto podmienok sú premenlivé; užívateľ môže prostredie ľubovoľne meniť a hrať sa s ním tak, ako sa to len dá v Linux-ovom systéme. Takmer každý shell má premenné prostredia (ak nie, tak to pravdepodobne nie je veľmi užitočný shell). Tu je prehľad príkazov, ktoré bash poskytuje na prácu so svojimi premennými prostredia.
$ set |
set sám o sebe vám ukáže všetky premenné prostredia, ktoré sú práve definované, rovanko ako aj ich hodnoty. Ako väčšina vstavaných príkazov bash-u, môže robiť tiež niekoľko iných vecí (s parametrami); ale to necháme na manuálovú stránku bash-u(1). Kúsok výstupu príkazu set na jednom z mojich počítačov vyzerá takto:
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 |
Všimnite si premennú PATH, o ktorej sme hovorili predtým; môžem spúšťať akýkoľvek program, v ktoromkoľvek z tých adresárov jednoducho naťukaním jeho holého mena.
$ unset VARIABLE |
unset odstráni všetky premenné, ktoré mu dáte, vymazaním ich mena aj hodnoty. bash zabudne, že taká premenná vôbec kedy existovala. (Nemajte obavy. Pokiaľ to nie je niečo explicitne definované v tej shell-ovej relácii, bude to nanovo definované v hociktorej ďalšej relácii.)
$ export PREMENNA=nejaka_hodnota |
Aj export je vskutku veľmi užitočný. Jeho použitím dáte premennej prostredia PREMENNA hodnotu “nejaka_hodnota”; ak PREMENNA neexistovala, tak už existuje. Ak PREMENNA už mala nejakú hodnotu, tak tá je teraz fuč. To nie je dobre, ak ste sa len pokúštali pridať adresár do vašej PATH. V takom prípade, pravdepodobne chcete niečo takéto:
$ export PATH=$PATH:/some/new/directory |
Všimnite si použitie $PATH. Tam, kde chcete, aby bash interpretoval premennú (nahradil ju jej hodnotou), šupnite $ na začiatok mena premennej. Napríklad, echo $PATH vráti hodnotu PATH. V mojom prípade:
$ 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 |
(Opäť niečo super.)
Rozhranie príkazového riadku znamená veľa písania.
Písanie je práca.
Nikto nemá rád prácu.
Z 3 a 2, môžeme vyvodiť, že 4) nikto nemá rád písanie. Našťastie, bash nás zachráni od 5 ( nikto nemá rád rozhranie príkazového riadku).
Pýtate sa, ako bash dosiahne tento báječný výkon? V spolupráci s nahrádzaním znakov, o ktorom sme hovorili predtým, má bash “dopĺňanie mien”.
Dopĺňanie mien funguje asi takto: píšete meno súboru. Možno, že je vo vašej PATH, možno ho píšete explicitne. Potrebujete naťukať len toľko z jeho mena, aby to stačilo na jeho jednoznačnú identifikáciu. Potom stlačte klávesu Tab. bash si domyslí čo chcete a dokončí ťukanie za vás!
Čas na príklad. /usr/src obsahuje dva pod-adresáre: /usr/src/linux a /usr/src/sendmail. Ja chcem vidieť, čo je v /usr/src/linux. Takže len naťukám ls /usr/src/l, stlačím klávesu TAB a bash mi dá ls /usr/src/linux.
Teraz predpokladajme, že existujú dva adresáre: /usr/src/linux a /usr/src/linux-old; Ak naťukám /usr/src/l a stlačím TAB, bash doplní toľko, koľko sa dá a ja dostanem /usr/src/linux. Tu môžem skončiť, alebo môžem stlačiť TAB ešte raz a bash mi ukáž zoznam adresárov, ktoré začínajú tým, čo som naťukal doteraz.
Teda menej ťukania ( a teda ľuďom sa môže páčiť rozhranie príkazového riadku). Vravel som vám, že je to super.