Anda dapat memeriksa mengapa (berbeda) dengan menjalankan sudo sudo -V.
Misalnya di Linux dijalankan:
$ sudo sudo -V | grep PATH
Value to override user's $PATH with: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Catatan: Pada MacOS / BSD, hanya menjalankan: sudo sudo -V.
Daftar di atas dibatasi karena plugin kebijakan keamanan default di beberapa distribusi Linux.
Ini dijelaskan lebih lanjut dalam man sudoers:
Jika secure_pathopsi diset, nilainya akan digunakan untuk PATHvariabel lingkungan.
secure_path- Path digunakan untuk setiap perintah yang dijalankan dari sudo. Jika Anda tidak percaya orang yang menjalankan sudo memiliki PATHvariabel lingkungan waras, Anda mungkin ingin menggunakan ini.
Penggunaan lain adalah jika Anda ingin memiliki "jalur root" terpisah dari "jalur pengguna". Pengguna dalam grup yang ditentukan oleh exempt_groupopsi tidak terpengaruh oleh secure_path. Opsi ini tidak diatur secara default.
Jika itu masalahnya, Anda dapat mengubahnya dengan menjalankan sudo visudodan mengedit file konfigurasi dan memodifikasi Anda secure_path(menambahkan jalur tambahan yang dipisahkan oleh :) atau menambahkan pengguna Anda ke exempt_group(sehingga Anda tidak akan terpengaruh oleh secure_pathopsi).
Atau untuk lulus PATHsementara dari pengguna , Anda dapat menjalankan:
sudo env PATH="$PATH" my_command
dan Anda dapat memeriksanya dengan:
sudo env PATH="$PATH" env | grep ^PATH
Lihat juga: Bagaimana cara sudomelestarikan $PATH?
Alasan lain mengapa lingkungan bisa berbeda sudo, adalah karena Anda dapat env_resetmengaktifkan opsi di sudoersfile Anda . Ini menyebabkan perintah dijalankan dengan lingkungan minimal baru.
Jadi, Anda dapat menggunakan env_keepopsi (tidak disarankan karena alasan keamanan ) untuk melindungi variabel lingkungan pengguna Anda:
Defaults env_reset
Defaults env_keep += "PATH PYTHONPATH"