Puoi controllare perché (è diverso) eseguendo sudo sudo -V
.
Ad esempio, su Linux, eseguire:
$ 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: su MacOS / BSD, basta eseguire: sudo sudo -V
.
L'elenco sopra è limitato a causa del plug-in della politica di sicurezza predefinito in alcune distribuzioni Linux.
Questo è ulteriormente spiegato in man sudoers
:
Se l' secure_path
opzione è impostata, il suo valore verrà utilizzato per la PATH
variabile di ambiente.
secure_path
- Percorso utilizzato per ogni comando eseguito da sudo. Se non ti fidi che le persone che eseguono sudo dispongano di una PATH
variabile d'ambiente sana , potresti voler usare questo.
Un altro uso è se si desidera che il "percorso radice" sia separato dal "percorso utente". Gli utenti nel gruppo specificato exempt_group
dall'opzione non sono interessati da secure_path
. Questa opzione non è impostata per impostazione predefinita.
In tal caso, puoi cambiarlo eseguendo sudo visudo
e modificando il file di configurazione e modificando il tuo secure_path
(aggiungendo un percorso aggiuntivo separato da :
) o aggiungendo il tuo utente exempt_group
( in modo da non essere influenzato dalle secure_path
opzioni).
O per passare PATH
temporaneamente l'utente , è possibile eseguire:
sudo env PATH="$PATH" my_command
e puoi verificarlo tramite:
sudo env PATH="$PATH" env | grep ^PATH
Vedi anche: Come sudo
conservare $PATH
?
Un altro motivo per cui l'ambiente potrebbe essere diverso sudo
è perché potresti avere l' env_reset
opzione abilitata nel tuo sudoers
file. Questo fa sì che i comandi vengano eseguiti con un nuovo ambiente minimo.
Quindi puoi usare l' env_keep
opzione (non raccomandato per motivi di sicurezza ) per preservare le variabili d'ambiente del tuo utente:
Defaults env_reset
Defaults env_keep += "PATH PYTHONPATH"