Linux esetén a "dd bs=1 count=1 2>/dev/null" utasítás helyett "head -1c" is írható. A két stty-beállítás nem azonosan működik a nem szokványos jelek beadásakor. (Pl. a RETURN billentyű leütése a "raw" esetben "CtrlM"-et, a "-icanon" esetben semmit sem tesz az "xxx"-be.).
Ha "exec" parancs indítja a shellt, akkor abban adjuk meg a "-" opciót. (Pl. exec - /bin/bash)
Ha "xterm" parancsot indítunk az X-ablakban, használjuk az xterm-nek a "-ls" (=login-shell) opcióját.
A fenti célra IBM AIX rendszerben az a - nem pontosan megindokolható - trükk elég volt, hogy a /bin/bash fájlnak ("ln" paranccsal) a /bin/-bash nevet (is) adtuk, és ezt adtuk meg a /etc/passwd-ben a felhasználó login shell-jeként.
Megjegyzés: A "su" parancsban szintén a "-" opció kezdeményezi a "login script" végrehajtását. Ez azt is jelenti, hogy a "root" elrontott (pl. "exit"-et tartalmazó) login scriptje a su root átjelentkezéssel "megkerülhető" !
A "/etc/motd" megmutatását letilthatjuk azzal, hogy a $HOME directorynkban létrehozunk egy .hushlogin nevű fájlt (tetszőleges tartalommal).
Pl. a ".profile" (ill. ".bash_profile") fájlba tett következő részlet csak akkor mutatja a fájlt, ha megújult tartalmát még nem láttuk:
if [ ! -e .hushlogin -o /etc/motd -nt .hushlogin ] 2>/dev/null
then cp /etc/motd .hushlogin; more .hushlogin
fi
Egy "bonyolultabb" megoldás a "make" parancs különleges használatát mutatja:
if [ -f /etc/motd ]
then make -s -f .hushlogin .hushlogin
fi
Ezzel azt mondjuk a make-nek, hogy a .hushlogin fájlban van az, hogy mit kell
csinálnia, és egyúttal ez a "frissítendő" fájl.
Maga a .hushlogin így néz ki:
.hushlogin: /etc/motd
-> touch .hushlogin
-> more /etc/motd
Ezzel azt mondjuk, hogy a .hushlogin a /etc/motd-től függ, és ha régebbi annál, akkor a touch és more parancsokat kell végrehajtani. (A touch(frissíti a .hushlogin dátumát) és more előtt TABulátor jelnek kell állnia (ezt jelöli a ->), mivel a fájlban több, a fentihez hasonló szerkezet is állhat.) (A make-nek a -s opció miatt ugyan "csendben" kellene dolgoznia, de egyes gépeken (pl. valerie) mégis kiírja, hogy "a .hushlogin már up-to-date", ha nincs egyéb dolga.)
Megjegyzés: A .hushlogin megléte egyéb hatásokkal is jár. Bejelentkezéskor nem lesz mutatva az utolsó login dátuma, és nem kapunk információt arról, hogy a levélfájlunkba újabb levél érkezett ("You have new mail ...").
Pl. ha a "lajos" nevű user nevesített pipe-ként létrehozza a $HOME/.plan nevű fájlját (ebben szokott lenni a felhasználó pgp-kulcsa) az
mkfifo $HOME/.plan
paranccsal, majd (háttérben) elindítja az alábbi parancs-sorozatot:
i=1
( while true
  do
  echo Ma te vagy a $i., aki a .plan file-omra kivancsi ! >~/.plan
  i=`expr $i + 1`
  done ) &
akkor mindazok, akik a ".plan" fájlját olvasni akarják (pl. a
finger -l lajos
paranccsal), azok lajos "pgp-kulcsa" helyett az előbbi "echo" parancs soronkövetkező lefutásának outputját kapják.
Megjegyzés: Egynél több processz is irhat a pipe-fájlba, egynél több is olvashat belőle, az írás-olvasás FIFO algoritmus alapján történik. Minden beleírt információ egyszer olvasható ki belőle.
Pl. az alábbi parancs-sorozat a "masodik" szöveget a képernyőre írja:
( echo elso
echo masodik 1>&2
echo harmadik ) >/dev/null
Másik lehetőség a /dev/tty-ra írás, ami a "standard output" és "standard error" mindegyikének elirányítása
esetén is a képernyőre kerül:
( echo elso
echo masodik >/dev/tty
echo harmadik ) >/dev/null 2>&1
Csizmazia Albert | csa@inf.elte.hu |
Maulis Ádám | maulis@ludens.elte.hu |