Newsgroup: it.comp.os.linux.iniziare
Titolo: Problemino con variabile d'ambiente

Salve,
l'installazione di postgresql richiede che sia settata la variabile 
LD_LIBRARY_PATH. Il settaggio l'ho fatto nel file /etc/profile in modo 
da non doverlo rifare ogni volta che accendo il computer.
Quando apro konsole e digito echo $LD_LIBRARY_PATH va tutto bene, se 
però cambio utente con su e controllo la variabile mi risulta vuota. 
Come si fa per rendere la variabile visibile anche quando passo da un 
utente ad un altro?
Grazie

HTH ha scritto:

Devi usare "su -" o "su -l" oppure "su --login". Vedi man su.
ciao
gerlos
-- 
"Solo lo scienziato è vero poeta: ci dà la luna, ci promette le stelle,
 ci farà un nuovo universo se sarà il caso."
   _                                  Allen Ginsberg
  (y)        < 
http://gerlos.altervista.org
 >
   =   gerlos  + - - >  gnu/linux registred user #311588
 Difenditi la tua libertà. Informati sul Trusted Computing.
		  < 
www.no1984.org
 >

 
OK, funziona. Grazie 1000.
ciao

Scusa gerlos siccome sto scrivendo un piccolo script per l'installazione 
di postgre mi sorge un altro problema.
In pratica faccio su -l e passo a root. Poi provo a scrivere
sudo -u postgres echo $LD_LIBRARY_PATH
ed il risultato è giusto, però se scrivo
sudo -u postgres /usr/local/pgsql/bin/initdb -D ../data
ottengo un errore perchè initdb non trova la libreria readline. Questo è 
dovuto al fatto che non trova la variabile LD_LIBRARY_PATH. Perchè?
Difatti effettuando in login con 'su -l postgres' va tutto bene. Il 
problema è sudo. Sapresti dare una spiegazione al fenomeno?
ciao e grazie ancora.

 ed il risultato è giusto
Non e` detto sia giusto, perlomeno non nello shell creato da sudo.
Prova a fare:
sudo -u postgres 'echo $LD_LIBRARY_PATH'
oppure
sudo -u postgres echo \$LD_LIBRARY_PATH
Nel tuo esempio, prendi il valore dallo shell corrente, non dallo shell
creato da sudo.
Ciao,
-- 
        Roberto Divia`              Love at first sight is one of the greatest
Dep:PH Bat:53 Mailbox:C02110      labour-saving devices the world has ever seen
Route de Meyrin 385               ---------------------------------------------
Case Postale                                Phone:  
+41-22-767-4994
CH-1211 Geneve 23 CERN                      Fax:    
+41-22-767-9585
Switzerland                                 E-Mail: 
Robert...@cern.ch

 Ciao,
Ciao

 Non sono proprio sicuro di quello che dici.
OK, vedo che sudo e` un po' coriaceo. Io ho fatto le mie prove con ssh:
ssh altramacchina "echo $HOSTNAME"
Io vedo l'hostname della macchina chiamante, non della macchina
chiamata.
Il punto e` che lo shell converte $HOSTNAME (o $LD_LIBRARY_PATH)
*prima* di fare ssh. Per la chiamata a sudo il meccanismo dovrebbe
essere lo stesso. sudo prende quel che gli passa lo shell.
Una seconda prova e` di stampare una variabile di ambiente che
sai essere diversa per i due utenti (il chiamante e postgres).
Nel mio environment ho il mio login name nella variable LOGNAME.
Puoi vedere se hai il tuo login in LOGNAME (o in qualunque
altra variabile). Facendo sudo ... "echo $LOGNAME" vedi il
login del chiamante oppure postgres (oppure niente)?
su -l root: hai il login completo, quindi LD_LIBRARY_PATH ha
il valore di login di root e facendo sudo ... $LD_LIBRARY_PATH
usi il valore dell'environment di root.
su root: non hai un login completo, LD_LIBRARY_PATH non e` settata
e sudo ... $LD_LIBRARY_PATH ti da` nulla ($LD_LIBRARY_PATH ti da il
valore dello shell chiamante, quello di root, in cui il valore e`
vuoto).


Ciao Roberto,
ho provato con
sudo -u postgres echo $USER
e il risultato è 'root', quindi dicevi bene.
Cercando in rete ho trovato l'opzione sudo -i che pare simulare il 
login. Però il mio sudo è un po' vecchiotto e non supporta questa opzione :(
Credo che dovrò scaricre una distro più nuova della mia mandrake 9.2
Ciao

 Credo che dovrò scaricre una distro più nuova della mia mandrake 9.2
In alternativa puoi provare a fare:
sudo -u postgres ". /etc/profile && ..."
In altre parole, eseguire esplicitamente /etc/profile prima di fare gli
altri comandi.


 
Con le virgolette non funza. Se le tolgo non va, credo per il fatto che 
al comando dopo && non applica sudo. Ho provato in un sacco di modi 
diversi ma ottengo un sacco di errori diversi.
Non sembra il caso di spendere troppo tempo per una cosa del genere. 
Vorrà dire che l'operazione di inizializzazione del database la farò a mano.
PS: sai se ubuntu server può girare su un celeron 900 con 128MB di ram?
Grazie mille, ciao.

 PS: sai se ubuntu server può girare su un celeron 900 con 128MB di ram?
No, non lo so.


 
:):):D   Funziona!   :):):D
Grazie tante per l'aiuto. Ciao.