Możesz sprawdzić, dlaczego (jest inaczej), uruchamiając sudo sudo -V.
Na przykład w systemie Linux:
$ sudo sudo -V | grep PATH
Value to override user's $PATH with: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Uwaga: Na MacOS / BSD, wystarczy uruchomić: sudo sudo -V.
Powyższa lista jest ograniczona z powodu domyślnej wtyczki zasad bezpieczeństwa w niektórych dystrybucjach Linuksa.
Jest to wyjaśnione dalej w man sudoers:
Jeśli secure_pathopcja jest ustawiona, jej wartość zostanie wykorzystana dla PATHzmiennej środowiskowej.
secure_path- Ścieżka używana dla każdego polecenia uruchamianego z sudo. Jeśli nie ufasz, że osoby uruchamiające sudo mają rozsądną PATHzmienną środowiskową, możesz chcieć tego użyć.
Innym zastosowaniem jest, jeśli chcesz, aby „ścieżka katalogu głównego” była oddzielna od „ścieżki użytkownika”. Użytkownicy w grupie określonej przez exempt_groupopcję nie mają wpływu secure_path. Ta opcja nie jest domyślnie ustawiona.
W takim przypadku możesz to zmienić, uruchamiając sudo visudoi edytując plik konfiguracyjny i modyfikując secure_path(dodając dodatkową ścieżkę oddzieloną przez :) lub dodając użytkownika do exempt_group(aby secure_pathopcje nie wpłynęły na ciebie ).
Lub w celu przejścia użytkownika PATHtymczasowego, możesz uruchomić:
sudo env PATH="$PATH" my_command
i możesz to sprawdzić poprzez:
sudo env PATH="$PATH" env | grep ^PATH
Zobacz także: Jak sudozachować $PATH?
Innym powodem, dla którego środowisko może być inne sudo, jest to, że możesz mieć env_resetwłączoną opcję w swoim sudoerspliku. To powoduje, że polecenia są wykonywane w nowym, minimalnym środowisku.
Możesz więc użyć env_keepopcji (niezalecanej ze względów bezpieczeństwa ), aby zachować zmienne środowiskowe użytkownika:
Defaults env_reset
Defaults env_keep += "PATH PYTHONPATH"