2011-03-09 21 views
5

Sono un utente Mac.come impostare la variabile di ambiente per l'utente root

Desidero impostare PYTHONPATH env per root. così

$ sudo su - 
# vi ~/.profile 

e aggiungere al file 'export PYTHONPATH =/mypythonlib'

poi

# env 

posso vedere questa linea

PYTHONPATH=/Users/simpnet2/projects/meiji/src/hershey 

ma ..

quando uso il comando sudo, canno t trovare che

$ sudo env 

.. non c'è PYTHONPATH

Il mio programma deve funzionare con il comando sudo e ha bisogno di PYTHONPATH.

+0

Leggere [come formattare le domande su SO] (http://stackoverflow.com/editing-help). –

risposta

6

Se si utilizza sh prova /etc/profile, bash provare /etc/bashrc e se si utilizza zsh provare /etc/zshenv.

+4

una cosa da aggiungere ... se su '' ubuntu'', bash prova ''/etc/bash.bashrc'' – Richard

2

Si consiglia di provare sudo -i che simulerà il login come root e fonte il ~root/.profile.

1

A partire da 10.8.5, inserendo le istruzioni dell'ambiente nel percorso .profile nella home dell'utente root (/ var/root) ha funzionato. dopo aver lasciato bash e tornare al prompt dell'utente root con 'su -', ho potuto vedere il mio nuovo percorso, ecc. con il comando 'env' e l'installazione del mio MacPorts correttamente.

 
MacBook-Pro:~ root# cat /var/root/.profile 
export MANPATH=/opt/local/share/man:$MANPATH 
export PATH=/opt/local/bin:/opt/local/sbin:$PATH 
MacBook-Pro:~ root# which port 
/opt/local/bin/port 
5

È possibile rendere visibile PYTHONPATH a sudo essere modificando il file sudoers. Si noti che si dovrebbe fare SOLO questo tramite visudo as explained here.

+0

La migliore risposta. In realtà, l'unico che funziona per me. –

0

In caso di accesso come utente normale e invocazione di "su-root", ho trovato che bash di Mac OS 10.8.5 stava ignorando .profile e .bash_profile; Non ero in grado di modificare $ PATH di root modificando quei file. Ciò che funzionava era la modifica di/etc/percorsi. Dopo aver chiuso la shell di root e inserito di nuovo con "su - root", era presente il nuovo percorso.

1

Bene, in altri sistemi Linux, è anche giusto che "sudo" non usi la variabile di ambiente locale. Ma puoi dichiarare la variabile d'ambiente temporanea insieme al comando 'sudo'.

Per esempio, nel tuo caso, è possibile aggiungere 'PYTHONPATH =/mypythonlib' nel comando 'sudo env', e il comando finale è:

sudo PYTHONPATH=/mypythonlib env 

È inoltre possibile leggere questo articolo: Using sudo. Puoi vedere come 'sudo' mantiene o ignora le variabili d'ambiente definite dall'utente.

Problemi correlati