Puede verificar por qué (es diferente) ejecutando sudo sudo -V
.
Por ejemplo, en Linux ejecuta:
$ sudo sudo -V | grep PATH
Value to override user's $PATH with: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Nota: en MacOS / BSD, basta con ejecutar: sudo sudo -V
.
La lista anterior está restringida debido al complemento de política de seguridad predeterminado en algunas distribuciones de Linux.
Esto se explica más detalladamente en man sudoers
:
Si secure_path
se establece la opción, su valor se usará para la PATH
variable de entorno.
secure_path
- Ruta utilizada para cada comando ejecutado desde sudo. Si no confía en que las personas que ejecutan sudo tengan una PATH
variable de entorno sensata, puede usar esto.
Otro uso es si desea que la "ruta raíz" esté separada de la "ruta del usuario". Los usuarios del grupo especificado por la exempt_group
opción no se ven afectados por secure_path
. Esta opción no está configurada por defecto.
Si ese es el caso, puede cambiar eso ejecutando sudo visudo
y editando el archivo de configuración y modificando su secure_path
(agregando una ruta adicional separada por :
) o agregue su usuario exempt_group
(para que no se vea afectado por las secure_path
opciones).
O para pasar el usuario PATH
temporal, puede ejecutar:
sudo env PATH="$PATH" my_command
y puedes verificar eso de la siguiente manera:
sudo env PATH="$PATH" env | grep ^PATH
Ver también: ¿Cómo hacer sudo
preservar $PATH
?
Otra razón por la cual el entorno podría ser diferente sudo
es porque podría tener la env_reset
opción habilitada en su sudoers
archivo. Esto hace que los comandos se ejecuten con un nuevo entorno mínimo.
Por lo tanto, puede usar la env_keep
opción (no recomendada por razones de seguridad ) para preservar las variables de entorno de su usuario:
Defaults env_reset
Defaults env_keep += "PATH PYTHONPATH"