[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: bash e variabili globali



Ennio Sr scrisse in data 19/09/2010 16:21:
> 2010/9/19 Paolo Sala <piviul@riminilug.it>:
>   
>> È nello scoprire questo
>>     
> cosa eattamente? (che con 'test' la funzione restituisce il valore che
> le è sato assegnato quando l'hai definita, mentre con '$test'
> restituisce un novo valore di 'var', se nel frattempo hai ri-definito
> 'var' stessa?)
>   
Perché parli di ridefinire? Semplicemente nello scoprire che se chiami
una funzione con $ allora viene evocata una subshell che fa una _copia_
delle variabili d'ambiente e quindi che eventuali modifiche rimangono
soltanto all'interno di quella subshell. Per voi sarà banale e scontato
ma io proprio non lo sapevo e ne sono sorpreso.

> Spero che altri ti possano chiarire meglio questi concetti (ma dove li
> hai letti, in 'man bash'?)
> (Per me le variabili di ambiente sono quelle definite in .bashrc o
> .bash_profile....)
>   
Bhé AFAIK per una funzione che siano definiti in .bashrc o all'interno
della funzione stessa poco importa: con printenv vengono mostrate tutte
le variabili e il loro contenuto attive in quel momento,
indipendentemente che siano definite in .bashrc o nella funzione stessa
e che formano l'ambiente in cui il tuo script gira. Poi se vuoi
chiamarle in un altro modo ci possiamo mettere d'accordo...

> [...]
> Ma sto divagando e forse nn ci combina niente con cio' che hai in mente ;)
>   
A me piacerebbe fare in modo che le modifiche fatte ad una variabile
globale possano modificare la variabile globale indipendente dal modo in
cui questa funzione venga chiamata ma ho scoperto e mi sembra
confermiate che questo non è possibile. E questo a me serviva per
supplire la carenza di bash di non poter passare le variabili by reference.

Ringrazio tutti per le risposte che mi hanno aiutato a chiarire meglio
questo aspetto di bash (la creazione di una subshell ad ogni chimata di
una funzione con $) che non conoscevo.

Ciao

Piviul


Reply to: