今天在虛擬機搭建zookeeper環境,結果死活運行不起來,唯一的信息只有out文件里“沒有java命令”這一個提示,找來找去發現是找不到java運行環境。可是很奇怪,明明我已經配置了,而且在終端執行java -version是有信息的,可是在 zkServer.sh 和 zkEnv.sh 中 echo $JAVA_HOME 確實為空。后來百讀到了答案:
https://blog.csdn.net/m0_38086372/article/details/88542909
=====================================================================================================
原因
sudo命令會重置環境變量,查看文件/etc/sudoers,可以看到這樣的配置
Defaults env_reset
1
解決方法
第一種,也是最簡單的,使用sudo -E來代替sudo即可保留當前用戶的環境變量,但缺點也很明顯,每次都要加
第二種方式:修改/etc/sudoers文件,將Defaults env_reset改為 Defaults !env_reset,這樣以后使用sudo就再也不會重置環境變量了
需要注意的是`/etc/sudoers`是只讀文件,vim不能更改,要使用`visudo`命令(不用加文件名)來更改內容
1
不過大部分環境變量我們一般都用不着,這種情況就可以在配置中添加env_keep,來使指定的幾個環境變量保持不變
具體的做法是在 /etc/sudoers中添加語句 Defaults env_keep += "env1 env2" ,這樣環境變量env1 和env2就可以在sudo執行時保留原來的值
不過既然/etc/sudoers是個只讀文件,就不是用來讓我們改來改去的;還除了它,我們還可以在目錄/etc/sudoers.d/下隨便創建文件,寫入 Defaults env_keep += "env1 env2",效果和在/etc/sudoers中是一樣的,也更加方便刪除和修改
---------------------
作者:hhgfy
來源:CSDN
原文:https://blog.csdn.net/m0_38086372/article/details/88542909
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
===================================================================================================
奶奶的,原來使用了sudo還會把環境變量重置了
