1. sudo 和 root不徹底等效,繼承的環境變量不同,最主要的區別仍是輸入的密碼不一樣。python
2. 使用sudo去執行一個程序時,出於安全的考慮,這個程序將在一個新的、最小化的環境中執行,也就是說,諸如PATH這樣的環境變量,在sudo命令下已經被重置成默認狀態了。因爲環境變量的緣由,好比pip能夠執行,可是sudo pip不必定能夠執行(PATH改變了,除非加上完整路徑)。shell
3. 默認狀況下sudo會重置PATH環境變量,賦給PATH的值在/etc/sudoers文件中的「Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin」中設定。因此若是使用sudo運行程序,最好補全完整路徑。安全
4. /etc/sudoers文件中的「Defaults env_reset」控制了sudo默認不會繼承原有環境。若是改爲「Defaults !env_reset」則會繼承原有環境(能夠在普通帳號的」.bashrc」中創建一個測試環境變量TESTV,而後使用「sudo bash」,再測試不一樣設置下,是否能看到TESTV的值)。同時,若是是「Defaults env_reset」,那麼能夠在下方的「」env_keep」裏設置須要保留的環境變量。bash
5. 若是使用「sudo bash」。那麼至關於運行了一個「 interactive bash
shell」,會「source /root/.bashrc」,也就會有root的環境變量。sudo成root以後,uid/gid和root帳戶一致。函數
6. 運行如「sudo echo $PATH」看到的仍然是當前普通用戶的PATH,這是由於shell在執行命令以前會先替換$PATH,因此這個命令最後變成了「sudo echo /home/testuse/.......」,輸出的仍然是用戶的PATH。測試
7. python運行時,遇到import module,會依次在當前目錄、環境變量PYTHONPATH、python的安裝設置相關的默認路徑中查找。若是module內也有import A,也會按照這個次序搜尋文件。因此函數庫發佈時,會提示須要預先安裝的庫,並指定文件位置或環境變量。ui