linux環境變數不能生效問題

2021-07-24 06:30:59 字數 934 閱讀 7219

在/etc/profile中新增環境變數時,遇到了一點問題,在此記錄。

以下下操作大概復現了所出的問題。

1.      普通使用者登入系統,切換到root,在/etc/profile中新增環境變數myenv=abc

2.      直接列印環境變數,#echo $myenv,輸出為空

3.      執行#source  /etc/profile後,列印#echo$myenv,輸出abc

4.      開啟新的終端,此時為普通使用者,列印環境變數#echo $myenv,結果為空

5.      重啟系統,普通使用者登入,開啟終端,#echo $myenv依然為空

6.      使用普通使用者登入,su  -  think ,$echo $myenv,輸出abc

7.      寫乙個指令碼,其中有echo  $myenv。執行這個指令碼,這條輸出為空

8.      切換到root,,$su  - ,列印myenv可得到abc,但是執行指令碼,依然輸出為空

很奇怪,明明可以列印出環境變數,但是指令碼卻不能正確執行。這裡提一些上述操作涉及到的一些東西。

su只是切換了身份,但是環境變數依然為原使用者的環境變數。使用su - 可以將環境變數也改變。

在圖形介面環境下,開啟終端是nonlogin-shell,在shell下進入shell子程序也是nonlogin-shell。使用tty1-tty6控制終端或者使用ssh為終端遠端登入,使用的是login-shell。

login-shell在登入時,會讀取/etc/profile的全域性配置,和~/.bash_profile或者~/.bash_login或者~/.profile的個人配置。nonlogin-shell 只讀取~/.bashrc。

問題的原因就在於執行指令碼是用的nonlogin-shell。

在/etc/profile 中新增環境變數,並使用exort ,以上問題可以解決

環境變數生效

include include include int setvalue char valuename,char addvalue dword nlength max path char directoryname max path int apientry winmain hinstance hi...

永久生效環境變數

方法一 在 etc profile檔案中新增變數 對所有使用者生效 永久的 用vi在檔案 etc profile檔案中增加變數,該變數將會對linux下所有使用者有效,並且是 永久的 要讓剛才的修改馬上生效,需要執行以下 source etc profile 方法二 在使用者目錄下的.bash pr...

環境變數不重啟生效

小技巧 環境變數不重啟生效 先到我的電腦 屬性 高階 環境變數,新增新環境變數或修改已有的環境變數,然後執行 dos命令提示符 或run cmd,假設要修改path變數,不管path的原值是什麼,在dos視窗直接把path修改為任意值,關閉dos視窗,這時,我的電腦 屬性 高階 環境變數裡path已...