Konfigurációs fájl és shell-változók

A Korn shell a Bourne shell-hez képest további beépített változókat vezet be. Ezek közül a legfontosabbakat, illetve a legérdekesebbeket ismertetjük. Amennyiben az ENV környezeti változónak értéket adtunk, azt a shell egy futtatható állomány nevének fogja fel, és minden ksh híváskor, így a bejelentkezés után is, megpróbálja lefuttatni. Ennek az állománynak szokásos, de nem kötelező elnevezése .kshrc. Mi a továbbiakban mint környezeti állományra fogunk rá hivatkozni. Használata érdekes ötleteket sugall a saját környezet rugalmas alakítására.

Az EDITOR és a VISUAL változók definiálják, hogy az editálást lehetővé tévő parancsokban (például állománynév behelyettesítés, parancssor editálás) melyik editor működésmódját emulálja a shell. A Korn shell a vi és az emacs editor üzemmódokat támogatja, könyvünkben a továbbiakban a vi üzemmód használatát tételezzük fel.

A MAILPATH változóban több útvonalat is meg lehet adni, amelyek mind "leveles-ládákhoz" vezetnek. Amikor értéket adunk ennek a változónak, implicite felszólítjuk a shell-t, hogy a MAIL-ben megadott postaládánkon kívül ezeknek az állományoknak a változását is figyelje a MAILCHECK által definiált időközönként.

A PWD változó az aktuális, az OLDPWD változó az utolsó cd parancs előtti katalógus nevét tartalmazza.

A RANDOM shell-változó egy kvázi-véletlen értéket tartalmaz.

A PS1 változó itt is a promptot tartalmazza, méghozzá alapértelmezés szerint a dollár jelet. Nagy előny a Bourne shellhez képest, hogy a shell minden egyes kiíratáskor újraértékeli PS1 értékét, így ha például szerepeltetjük benne a PWD változót, a promptban a DOS-ban megszokott módon lesz látható az aktuális katalógus. (Számos vizsgálat tanúsága szerint szerint a leggyakrabban végrehajtott Unix parancsok listáját utcahosszal vezeti a pwd parancs...) Hálózatos környezetben még kényelmesebbé tehetjük életünket, ha gépünk nevét is szerepeltetjük a promptban:

host=`uname -n` # az uname parancs révén kinyert gépnév a host nevű változóba

PS1='${host}:${PWD}> '

Ha a fenti két sort szerepeltetjük .kshrc fájlunkban, a prompt az alábbihoz hasonló lesz:

hp:/users/janos>

A C shellhez hasonlóan itt is lehetőség van a kiadott parancsok sorszámozására a ! karakterrel, így ha a PS1='!${host}:${PWD} ! ' megadást használjuk, promptunk ilyen jellegű lesz:

[46] hp:/usr/lib/terminfo>

A REPLY, LINE, PS3, - (elválasztójel), HISTFILE, HISTSIZE értelmezését az alkalmazásnál ismertetjük.

Az _ (aláhúzás) jelöli az előző utasítássor utolsó argumentumát.

Az előzőek illusztrációjaként nézzük meg, mi történik, ha a $HOME/.profile-unkat így egészítjük ki:

ENV=$HOME/.kshrc

let SorSzam=0

trap "$HOME/.logout" 0

export ENV SorSzam

A Korn shell minden indulásakor keresni fogja a $HOME/.kshrc nevű állományt, mivel ezt találja az ENV változóban, hogy azt lefuttassa. Ennek az állománynak a tartalma az alábbi:

$ cat $HOME/.kshrc

let SorSzam=$SorSzam+1

echo Uj shell indul

$

Végül a $HOME/.logout tartalma:

$ cat $HOME/.logout

let SorSzam=$SorSzam-1

if test $SorSzam gt 0

then echo Meg nem erte el az utolso reteget

fi

echo "A kilepes `date |cut -c12-20 ` -kor tortent"

$

Gondoljuk végig mi történt, ha a képernyőn következő sorozatot látjuk.

login:zsu

Uj shell indul

$ echo $SorSzam

0

$ ksh

Uj shell indul

$ echo $SorSzam

1

$ exit

Meg nem erte el az utolso reteget

A kilepes 12:10:00:-kor tortent

$ exit

A kilepes 12:10:02:-kor tortent

login:

 

Tartalomjegyzék