通過sudo -l來檢視sudo的限制:
$ sudo -l
matching defaults entries for *** on this host:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
user *** 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 # 修改為不重置環境
sudo命令保持環境變數
如果你裝了多個版本的python,比如 anaconda下的python3.5,原生自帶python2.7,那麼你在anaconda環境下執行sudo python和python所使用的python版本是不同的。sudo在切換成root使用者的時候,env並不會去保留這些環境變數,需要特別的指明才可...
讀取 環境變數
實現 environmentaware setenvironment 方法 即可 注意 不管配置在 啟動伺服器是,就會執行該方法。可以單獨配置,也可以配置在 其他類中。方法一。方法二。可以配置在 contoller中。com.zll.demo.controller.usercontroller re...
linux環境變數設定 讀取
linux下環境變數的讀取分為login shell和non login shell,第一次登入的時候由tty1 tty6的登入,以及通過窗體登入時需要輸入帳號密碼的登入,都叫做login shell 我們經常在圖形介面上啟動新的終端機,這個時候登入的使用者實質上non login shell lo...