1. 程式人生 > >getenv、setenv函式(獲取和設定系統環境變數) 與 環境變數

getenv、setenv函式(獲取和設定系統環境變數) 與 環境變數

1、getenv()

函式名: getenv 功 能: 從環境中取字串,獲取環境變數的值 用 法:char *getenv(char *envvar); 函式說明:getenv()用來取得引數envvar環境變數的內容。引數envvar為環境變數的名稱,如果該變數存在則會返回指向該內容的指標。環境變數的格式為envvar=value。getenv函式的返回值儲存在一個全域性二維數組裡,當你再次使用getenv函式時不用擔心會覆蓋上次的呼叫結果。 返回值: 執行成功則返回指向該內容的指標,找不到符合的環境變數名稱則返回NULL。如果變數存在但無關聯值,它將執行成功並返回一個空字串,即該字元的第一個位元組是null。 相關函式:
_wgetenv、getenv_s、_wgetenv_s

2、putenv

      首先要說明的是,通過此函式並不能新增或修改 shell 程序的環境變數,或者說通過setenv函式設定的環境變數只在本程序,而且是本次執行中有效。如果在某一次執行程式時執行了setenv函式,程序終止後再次執行該程式,上次的設定是無效的,上次設定的環境變數是不能讀到的。
     putenv(改變或增加環境變數)
  相關函式 getenv,setenv,unsetenv
  表頭檔案 #include<stdlib.h>
  定義函式 int putenv(const char * string);

  函式說明:putenv()用來改變或增加環境變數的內容。引數string的格式為name=value,如果該環境變數原先存在,則變數內容會依引數string改變,否則此引數內容會成為新的環境變數。
  返回值:執行成功則返回0,有錯誤發生則返回-1。
  錯誤程式碼:ENOMEM 記憶體不足,無法配置新的環境變數空間。

--------------------------------------------------------------------------------------------------------

export命令

功能: 設定或顯示環境變數

語法: export [-fnp] [變數名稱]=[變數值]

說明: 在shell中執行程式時,shell會提供一組環境變數。export可新增,修改或刪除環境變數,供後續執行的程式使用。export的效力僅及於該此登陸操作。


引數: 
-f   此時變數名稱為函式名稱。
-n   刪除指定的變數。變數實際上並未刪除,只是不會輸出到後續指令的執行環境中。
-p   列出所有的環境變數。

舉例:

export PRJROOT=/home/eriol/newproject
export PREFIX=${PRJROOT}/tools
export PATH=${PATH}:${PREFIX}/bin

Linux系統環境變數中,路徑名用冒號分隔。

注意:export設定只對當前的bash登入session有效,它是存在記憶體裡面的

如果想要環境變數永久生效可以修改下面兩個檔案中的任何一個

1 /etc/profile 

2 .bash_profile

其中,/etc/profile是全域性的環境變數,對所有使用者生效,而.bash_profile只對當前使用者啟作用。


設定完畢,登出並重新登入,設定就生效了。 注意:export設定只對當前的bash登入session有效。這是存在記憶體裡面的。