在/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已...