[Tech] fare il "source" di uno script tcsh da uno script perl

Franco Bagnoli franco.bagnoli@unifi.it
Lun 20 Gen 2003 07:38:29 CET


On Sun, 19 Jan 2003, Claudio Sicilia wrote:

> Sono un neofita del Perl.

e quindi direi che si tratta di una domanda da lista primipassi. 

> Sto provando a scrivere uno script Perl che chiami uno script per la
> shell tcsh.
> 
> So che per fare chiamate alla shell devo utilizzare SYSTEM o EXEC ma se
> provo a fare:
> 
> system ("source pippo.tcsh");
> 
> mi appare un errore che dice:
> 
> can't spawn source: file or directory not found?

system non fa necessariamente una chiamata alla shell, come ti dice 

perldoc -f system

             If there is
             only one scalar argument, the argument is checked for shell
             metacharacters, and if there are any, the entire argument is
             passed to the system's command shell for parsing (this is
             "/bin/sh -c" on Unix platforms, but varies on other platforms).
             If there are no shell metacharacters in the argument, it is
             split into words and passed directly to "execvp", which is
             more efficient.

quindi dato che nella tua stringa non ci sono metacaratteri viene 
interpretata come se tu chiamassi il programma "source" (mentre invece è 
un comando dello shell). Inoltre normalmente lo shell chiamato è sh (e 
quindi bash) non tcsh. Quindi dovresti chiamare 

system('/bin/tcsh source pippo.tcsh')

ma quale è lo scopo di chiamare source? per eseguire lo script basta che 
tu metta in cima allo script 

#!/bin/tcsh

(prima riga) e tu lo renda eseguibile, e poi chiami 

system('pippo.tcsh')

oppure 

system('/bin/tcsh pippo.tcsh')

se invece in pippo.tcsh definisci delle variabili di ambiente che vuoi 
importare, allora non ti funziona perché le variabili appartengono 
allo shell, e vengono perse quando lo shell finisce. 

-- 
Franco Bagnoli (franchino) <franco.bagnoli@unifi.it> (bagnoli@dma.unifi.it)
virtual location: Dipartimento di Energetica "S. Stecco"
real location: Dip. Matematica Applicata "G. Sansone", Universita' Firenze,
Via S. Marta, 3 I-50139 Firenze, Italy. Tel. +39 0554796422, fax: +39 055471787
GPG Key fingerprint = 169D 9EA5 8FD3 7EDA E43A  9830 255F BCEC 0D63 3728






Maggiori informazioni sulla lista flug-tech