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_pathse establece la opción, su valor se usará para la PATHvariable 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 PATHvariable 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_groupopció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 visudoy 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_pathopciones).
O para pasar el usuario PATHtemporal, 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 sudopreservar $PATH?
Otra razón por la cual el entorno podría ser diferente sudoes porque podría tener la env_resetopción habilitada en su sudoersarchivo. Esto hace que los comandos se ejecuten con un nuevo entorno mínimo.
Por lo tanto, puede usar la env_keepopción (no recomendada por razones de seguridad ) para preservar las variables de entorno de su usuario:
Defaults env_reset
Defaults env_keep += "PATH PYTHONPATH"