Newsgroup: it.comp.os.linux.iniziare
Titolo: Settare variabili di shell

Ciao a tutti,
Ho un problema con un banalissimo script di shell usando Linux
2..2.5-15 e bash 1.47.2.
Nel sistema entro come utente root ed eseguo lo script test che e'
cosi' composto:
-----
#!/bin/sh
export TOTLNK="Prova"
------
al termine dell'esecuzione mi aspetto che digitando: echo $TOTLNK
di vedere stampare il valore: Prova
ed invece nulla!, sembra che la export non abbia settato a livello di
env ila variabile TOTLNK.
Ovviamente fuori dallo script tutto funziona bene.
Premetto che mettendo la export in .bashrc per esempio tutto funziona,
ma non mi serve, in quanto la variabile d'ambiente deve variare
dinamicamente.
Grazie,
--
MauCDT

di vedere stampare il valore: Prova
e ti aspetti male.
devi ripassare il concetto di shell padre e figlio.
tu sei al prompt dei comandi, e hai una shell in esecuzione, con il suo
ambiente con le variabili settate.
se lanci un comando qualsiasi, la shell lancia un'altra shell[*] che
eredita l'ambiente del padre, entro cui tu aggiungi la variabile TOTLNK
con il suo valore.
quando pero' lo script finisce, la seconda shell muore portandosi dietro
il suo ambiente, e dalla shell padre non vedi piu' nulla.
Diverso risultato puoi ottenere lanciando lo script in questo modo:
#. prova
cioe' punto spazio prova.
con questa sintassi, forzi la shell attuale ad eseguire il comando, e a
usare l'ambiente corrente per definire la variabile TOTLNK.
[*] fai questa prova: modifica il tuo script e aggiungi un comando ps in
coda, poi fai prima un ps, lanci prova, e vedrai che nasce una bash in
piu'.
Ciao.roberto
-- 
Save our planet!
Save wildlife;
For your E-MAIL use only recycled Bytes !!
roberto poggi  
rpo...@softhome.net

 di vedere stampare il valore: Prova
No: uno script e` eseguito in una shell figlia di quella di login (o
da cui lo stai eseguendo) ed export setta l'ambiente per la shell
corrente e la esporta nelle *sue* figlie.
Devi usare export direttamente da riga di comando.
Se prima devi eseguire altri comandi usa un alias o una funzione
di shell; man bash.
-- 
Cinereview: ogni maledetta domenica: lungo, ma abbastanza    _/Davide\_
interessante. Certo, di Oliver non s'e` visto molto. Voto: 7 \Alberani/


Grazie mille per le delucidazioni, speravo fosse un problema del
genere, ma non sapevo e non risuscivo a trovare nella documentazione
di bash come forzare la shell ad usare l'environment attuale.
Ciao
--
MauCDT

Ciao roberto,
 > On Thu, 20 Apr 2000 14:50:00 GMT, 
Mau...@tin.it
 (Maurilio Ceriotti)
 > wrote:
 > [...]
 > >#!/bin/sh
 > >export TOTLNK="Prova"
 > >al termine dell'esecuzione mi aspetto che digitando: echo $TOTLNK
 > >di vedere stampare il valore: Prova
 > e ti aspetti male.
 > devi ripassare il concetto di shell padre e figlio.
infatti.
Se vuoi qualcosa di simile, salva il valore della variabile in un file.
(per esempio /tmp/TOTLNK )
Cosi' lo puoi leggere da qualsiasi altra parte.
-- 
Pa.Ped, Como
http://www.fastflow.it/~paolop
ICQ: 4755831
VOTE AGAINST SPAM! 
http://www.politik-digital.de/spam/it/
Appunti Linux, FAQ, HOWTO e altro:
file://usr/doc/HOWTO
file://usr/doc/FAQ
Pluto Journal:     
http://www.pluto.linux.it/journal
Linux Gazette:     
http://www.linuxgazette.com
Linux Weekly News: 
http://lwn.net
LinuxDoc:          
http://www.linuxdoc.org
(info|news).ita: 
http://www.punto-informatico.it
http://erlug.linux.it/
http://www.ziobudda.net/
Ricerca NEWS: 
http://www.deja.com
IRC: #linux-it

Anche:
help .
(help help)
-- 
Ci sentiamo  |  Remigio Zedda
             |  
remi...@tiscalinet.it
ciao Remigio |                    kernel 2.2.13 su Slack 7.0