2011-03-09 32 views
5

Soy usuario de Mac.cómo establecer la variable de entorno para el usuario raíz

Quiero configurar PYTHONPATH env para root. por lo

$ sudo su - 
# vi ~/.profile 

y añadir al archivo 'exportación PYTHONPATH =/mypythonlib'

continuación

# env 

puedo ver esta línea

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

pero ..

cuando uso el comando sudo, canno t encontrar que

$ sudo env 

.. no hay PYTHONPATH

Mi programa tiene que ejecutar con el comando sudo y necesita PYTHONPATH.

+0

Lea [cómo formatear preguntas en SO] (http://stackoverflow.com/editing-help). –

Respuesta

6

Si usa sh try /etc/profile, bash try /etc/bashrc y si usa zsh pruebe /etc/zshenv.

+4

una cosa para agregar ... si está en '' ubuntu'', bash try ''/etc/bash.bashrc'' – Richard

2

Debe intentar sudo -i que simulará el inicio de sesión como root y el origen ~root/.profile.

1

A partir del 10.8.5, poner mis declaraciones de entorno en la ruta .profile en la página principal del usuario raíz (/ var/root) funcionó. después de salir de bash y regresar al indicador de usuario raíz con 'su -', pude ver mi nueva ruta, etc. con el comando 'env' y instalación de mis MacPorts correctamente.

 
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

Puede hacer que PYTHONPATH sea visible para poder editar su archivo sudoers. Observe que SÓLO debe hacer esto a través de visudo as explained here.

+0

La mejor respuesta. En realidad, el único que funciona para mí. –

0

En el caso de iniciar sesión como usuario normal e invocar "su - root" encontré que bash de Mac OS 10.8.5 ignoraba .profile y .bash_profile; No pude cambiar $ PATH de root editando esos archivos. Lo que funcionó fue editar/etc/paths. Después de salir del shell de raíz y volver a ingresar con "su - root", la nueva ruta estaba presente.

1

Bueno, en otro sistema Linux, también es correcto que 'sudo' no use variable de entorno local. Pero puede declarar la variable de entorno temporal junto con el comando 'sudo'.

Por ejemplo, en su caso, se puede añadir 'PYTHONPATH =/mypythonlib' en el comando 'sudo env', y el comando final es:

sudo PYTHONPATH=/mypythonlib env 

También puede leer este artículo: Using sudo. Puede ver cómo 'sudo' mantiene o ignora las variables de entorno definidas por el usuario.

Cuestiones relacionadas