2009-10-04 4 views
6

Quiero agregar un directorio al $ PATH cuando ejecuto sudo, este es un requisito (semi) permanente, no algo que deba agregarse a los propios guiones . Noto que Django ha logrado hacerlo, (my $ PATH cuando ejecuto sudo es "/ usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin:/django/django-trunk/django/bin ") - Entonces, ¿cómo hizo eso?

Respuesta

6

creo que esto debería funcionar si lo guarda en /root/.bashrc:

export PATH=/www/foo:$PATH 

me olvido de si se trata de PATH o PYTHONPATH y si lo que realmente importa, esto se basa en mi .bashrc del usuario:

export PYTHONPATH=/www/django:$PYTHONPATH 
+0

Gracias, señor, esto fue el truco. –

+0

No hay problema. No olvide seleccionar una respuesta para que otros sepan que se ha resuelto :) –

+0

+1 para resolver el problema del OP. –

3

puede establecer la variable en/etc/medio ambiente y, a continuación, utilizar "sudo -i" para ejecutar el script (funciona en ubuntu 10.10).

17

Esta es la línea en el archivo sudoers que restablece:

Defaults env_reset

Puede solucionar esto mediante la adición PATH-env_keeps o añadiendo esta línea:

Defaults env_keep = "PATH"

EDITAR : meder, no deshabilita env_reset, simplemente omite la ruta de restablecimiento

O puede eliminar la línea ofensiva env_reset.

Aún mejor, sin embargo, se puede declarar un secure_path que reemplazará PATH cuando se ejecuta sudo:

Defaults secure_path="/bin:/usr/bin"

De esa manera usted puede controlar lo que los directorios específicos que deben incluirse en el camino.

+1

Esta debería ser la respuesta aceptada. Puede limitar el acceso solo a las rutas necesarias con el mecanismo sudoer en lugar de abrir todo el acceso de la raíz. – Alkaline

+0

Acceda al archivo sudoers a través de 'sudo visudo' – fiat

Cuestiones relacionadas