linux user group brescia

immagine del castello

Archivio della mailing list

info 004: scripting...

DisKre Panza manticore a interfree.it
Ven 12 Gen 2001 19:31:17 UTC
Un saluto a tutti.

   Questa e` dedicata ai guru di bash... :)

   Leggo e riporto testualmente da MCmicromputer n. 205 - aprile 2000, pag. 181:

"Ambito di validita` dell'ambiente shell"

   Il valore assegnato ad una variabile viene perduto quando la shell in cui e`
stato definito termina.
[...]
   L'effetto positivo di tale comportamento  e` che non vi e` il rischio che un
uso improprio delle variabili abbia ripercussioni sull'ambiente della shell
padre.
   L'effetto negativo e` invece quello che non si puo`, o non e` cosi` semplice
come potrebbe sembrare, scrivere uno shell script che compia le stesse
operazioni del comando "cd".
[...]

   Beh... e` vero! Accidenti se e` vero...!

Il caso in questione:

   Ho abilitato su Debian l'output del file /var/log/messages su tty12 (anche
qui: se non avessi potuto scuriosare l' /etc/syslog.conf della Mandrake, col
piffero che ci sarei riuscito!), e di conseguenza ho abilitato anche tutte le
tty da 8 a 11 per console di 'sistema'...

   Avrei voluto fare in modo che, all'atto del login come root, uno script
determinasse la console di login e si regolasse di conseguenza, spostandosi
automaticamente in directory 'strategiche' di servizio o lanciando programmi
'ad hoc'...

   Bene: lo script che fa questo sono riuscito a farlo, ma vigliacco se mi
riesce di lanciarlo in automatico! (e questa e` la prima: se lo metto in
/etc/passwd in fondo a root, esegue e poi esce e mi ritrovo daccapo)... :(

(per la cronaca: il meccanismo e` questo)

export MY_TTY=`ps | grep bash | tr -s ' ' '!' | cut -d! -f3`

case "$MY_TTY" in
   tty11)
      ...
      ;;
   tty10)
      ...
      ;;
   etc...
      ;;
esac

(ne sono molto fiero, sapete com'e`... :) )

   Secondo: per cambiare dir ho risolto lanciando una shell dopo il comando cd,
ma non mi pare una soluzione particolarmente elegante...
   
   Terzo: per uscire da una shell come utente, basta scrivere 'logout'.
L'effetto e` quello di cancellare lo schermo e ripristinare il prompt in modo
che ci si accorge subito che quella console non e` attiva (tra l'altro ho nota-
to che su Mandrake c'e addirittura un meccanismo che rifa` da capo la schermata
iniziale di login, con tanto di Pinguino a colori... ecco, e` possibile anche
con Debian? e se si`, come?)

   Per uscire come root, invece, Debian (ma penso che la cosa sia 'standard')
vuole a tutti i costi il comando 'exit'.

   Ok, va bene, dov'e` il problema? Che un semplice script del tipo:

#!/bin/sh
clear; exit

   NON FUNZIONA!

   In bash, 'exit' e` il comando di uscita dallo script. Capite il paradosso?
Tutto quel che sono riuscito a pensare, e` che la cosa sia 'voluta' (ho
imparato a mettermi nell'ottica che i comportamenti 'strani' di Unix lo siano
sempre e solo 'in apparenza', e che ci sia sotto una logica, per quanto
perversa o paranoica possa sembrare a prima vista... :) )...

   ...pero` il problema rimane. E` possibile effettuare il logout come root da
uno script bash? E se si`, come? Se non e` possibile, non e` che mi getti dal
faraglione: semplicemente, so che non si puo`, punto a basta. Ma restare nel
dubbio, questo mi fa veramente impazzire!

-- 
Fakkino DisKre Panza




Maggiori informazioni sulla lista Lug