[linux_var] Modalita' esecuzione script

Diego Roversi diegor a tiscali.it
Ven 18 Lug 2008 14:01:54 UTC


On Thu, Jul 17, 2008 at 06:53:00PM +0200, 0bscure wrote:
> On Thu, Jul 17, 2008 at 4:49 PM, Luca Lesinigo <lucky a luckyluke.org> wrote:
> 
> > In alcune macchine se devo lanciare uno script, pippo.sh per esempio devo
> > fare:
> > # . ./pippo.sh
> >
> > . ?
> >
> > Assai strano.
> >
> 
> 
> Per niente. Prova...
> 

E' l'equivalente del comando source in csh. 

Partiamo dall'inizio. Quando si esegue uno script, questo viene eseguito da
una nuova istanza della shell, che morira' al termine dello script.

Questo curioso comportamento, ovvero lo script che gira in una shell
separata, ha i seguenti vantaggi:

* puo' essere utilizzata una shell diversa da quella attuale (se la prima
  riga dello script inizia per #! viene usata quella)
* se lo script cambia delle variabili d'ambiente quelle rimangono confinate
  allo script senza inquinare la shell corrente.
* se si vuole killare lo script non e' necessario uccidere la shell corrente

Questo significa anche che uno script di shell non puo' modificare le
variabili d'ambiente della shell da cui e' stato lanciato. Il 99% dei casi
cio' e' bene. Ma in alcuni casi fa comodo il contrario. La soluzione in
questo caso e' di chiedere alla shell corrente di interpretare il file
invece di forkare una nuova shell.

Per farlo si usa: ". <nome file>".

Lanciare uno script qualsiasi usando "." e' ovviamente sconsigliato.


-- 
Saluti / Regards

Diego Roversi | 
              | diegor at tiscalinet.it 



More information about the Talking mailing list