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óbaPS1='${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: