Newsgroup: it.comp.os.linux.iniziare
Titolo: refresh delle variabili

Ciao a tutti.
Mi servirebbe sapere come si puo' modificare una variabile tipo CLASS_PATH
durante l'esecuzione di linux e fare in modo che tutto il so lo veda.
se do' una export da xterm o da una console non tutto il sistema lo vede.
 
-- 
----
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it
 
 
 

 
 
Cosi` come lo scrivi non credo sia possibile.
 
Per esempio export funziona da padre a figlio,
non va al contrario.
 
Forse sarebbe meglio tu descrivessi il problema
che cerchi di risolvere con un cambio di variabile
al volo, magari esiste un'alternativa.
 
bye,
 
-- 
 
piergiorgio

 non va al contrario.
 
Per avere effetto sul padre occorre lanciare lo script cosi` (se ho capito bene ...):
$ source ./script.sh
 
http://stackoverflow.com/questions/1464253/global-environment-variables-in-a-bash-script
 
 
 
 

 sistema lo vede.
 
la metti in /etc/profile ad esempio

 
http://stackoverflow.com/questions/1464253/global-environment-variables-in-a-bash-script
 
 
Questa e` una cosa diversa.
 
Se fai partire uno script con "." ovvero "source",
non vi e` piu` un contesto separato, cioe` non vi
e` un figlio e quindi nessun padre.
La shell semplicemente interpreta lo script nello
stesso contesto.
 
Ovviamente tale azione ha dei limiti (background task,
per esempio), per cui si usa per scopi ben precisi,
tipo integrare funzioni e variabili in un contesto
specifico. Ad esempio per spezzare un singolo script
su piu` file.
 
bye,
 
-- 
 
piergiorgio

 su piu` file.
 
Si, grazie, effettivamente avevo tempo fa usato "source" o "." per spezzettare un file.
Cmq non sono per nulla bravo a scrivere in bash :-( Vado piu` che altro per tentativi e con ricerche 
di codice gia` scritto; ad esempio leggo adesso che RedWiz indica "/etc/profile", io ricordo di aver 
invece usato "/etc/environment" che mi funziono`, ma non e` che poi so precisamente la differenza 
di utilizzo di quei due file.
 
 


Facebook: Massimo Bacilieri

 so precisamente la differenza di utilizzo di quei due file.
]zac[

 sistema un minimo decente per farlo.
 
Far "importare" le variabili dal figli al padre
e` un problema, non irrisolvibile, ma inutilmente
complicato.
 
Il fatto e` questo, il padre ha delle variabili
esportate, crea un figlio (fork + exec) il quale,
_prima_ di partire, eredita quelle variabili.
Il che significa che, _prima_ di partire, queste
variabili vengono "copiate" (virtualmente, dato
che potrebbero usare cow) nel contesto del figlio.
Quando il figlio parte, si trova con le variabili
belle e definite.
 
A questo punto, modificare una variabile da figlio a
padre significherebe accedere ad un area di memoria
_attualmente_ in uso dal padre.
In altre parole bisognerebbe prendere un lock, poi
modificare la variabile, quindi rilasciare il lock.
Il problema e` che anche il padre deve, per ogni
accesso a qualunque variabile (importabile) fare la
stessa cosa, il che e` inaccettabile dal punto di
vista prestazionale.
 
Il tutto si risolve, ovviamente, con shared memory
esplicita, dove si puo` essere un po' piu` "chiari"
nella modalita` di condivisione.
 
Il resto, cioe` "source" ovvero "profile" e simili,
risolve problemi analoghi, ma piu` specifici.
Cioe` in situazioni ben definite e non cosi` generiche
come far passare valori da figlio a padre.
 
bye,
 
-- 
 
piergiorgio