Il giorno ven, 16/12/2011 alle 15.47 +0100, Paolo Sala ha scritto: [...] > Si ma mi sembra venga ignorato se ad esempio metti il tuo file in > crontab oppure lo esegui con at (a meno che appunto non lo richiami con > /bin/bash /path/tuo/bash/script)
Non mi pare. Prova: fai uno script e lo lanci da cron; dentro lo script controlli la variabile SHELL e scopri qual è. La shell corrente, se invochi un eseguibile con il bit «x» a posto, non sta ad aprirlo per guardare se sia un binario o da interpretare, ma invoca la chiamata execve() di sistema. Questa chiamata fa la verifica in questione e chiama l'interprete giusto, ignorando completamente quale eseguibile o interprete l'abbia invocata. Se invece usi il comando "sh /path/tuo/script" stai facendo una cosa diversa: la shell non invoca la execve() e si occupa invece di interpretare il file passato come argomento. Difatti, la funzione execve(), una volta che capisce che l'eseguibile non è un binario, ma va interpretato, esegue l'interprete trovato nello shebang aggiungendovi in fondo il nome del file da interpretare e tutti gli eventuali argomenti ricevuti. Il fatto che cron e at utilizzino una shell, è scelta obbligata in quanto permettono di avere comandi complessi al posto di limitarsi ad eseguire un solo comando. L'interpretazione di questi comandi è demandata alla shell predefinita. Ma questa a sua volta userà execve(). «man execve» per alcune informazioni in proposito. G. -- Per REVOCARE l'iscrizione alla lista, inviare un email a [email protected] con oggetto "unsubscribe". Per problemi inviare un email in INGLESE a [email protected] To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/1324048527.5735.40.camel@scarafaggio

