sudo命令無法讀取環境變量的解決方法

通過sudo -l來查看sudo的限制:

$ sudo -l

Matching Defaults entries for xxx on this host:

env_reset, mail_badpass,

secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User xxx may run the following commands on this host:

(ALL : ALL) NOPASSWD: ALL

注意看第5行的選項Defaults env_reset表示默認會將環境變量重置,這樣你定義的變量在sudo環境就會失效,獲取不到。

另外有的發行版還有一個Defaults env_keep=""的選項,用於保留部分環境變量不被重置,需要保留的變量就寫入雙引號中。

解決方法:

方法1

在用戶的主目錄裏的.bashrc中添加:

alias sudo='sudo env PATH=$PATH'

方法2

執行sudo visudo,修改配置

# Defaults env_reset     # 註釋掉原有配置

# Defaults env_keep=”…”    # 註釋掉指定的變量保持

Defaults !env_reset      # 修改爲不重置環境

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章