1、getenv()
函式名: getenv
功 能: 從環境中取字串,獲取環境變數的值
標頭檔案: stdlib.h
用 法: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
定義函式 int putenv(const char * string);
函式說明:putenv()用來改變或增加環境變數的內容。引數string的格式為name=value,如果該環境變數原先存在,則變數內容會依引數string改變,否則此引數內容會成為新的環境變數。
返回值:執行成功則返回0,有錯誤發生則返回-1。
錯誤**:enomem 記憶體不足,無法配置新的環境變數空間。
#include
#include
intmain
(int argc,
char
**ar**,
char
**env)
將上述**編譯成a.out ,執行。putenv ,setenv ,都是只在這個elf裡有效。
例如:我執行a.out,然後我在命令列 echo $var, 或者printenv | grep var是得不到環境的. 即使我c中return 0前面加while(1){} ,卡住程式,也一樣得不到
export
功能: 設定或顯示環境變數
語法: export [-fnp] [變數名稱]=[變數值]
說明: 在shell中執行程式時,shell會提供一組環境變數。export可新增,修改或刪除環境變數,供後續執行的程式使用。export的效力僅及於該此登陸操作。
引數:-f 此時變數名稱為函式名稱。
-n 刪除指定的變數。變數實際上並未刪除,只是不會輸出到後續指令的執行環境中。
-p 列出所有的環境變數。
舉例:
export prjroot=/home/eriol/newproject
export prefix=
$/tools
export path=$:
$/bin
linux系統環境變數中,路徑名用冒號分隔。
注意:export設定只對當前的bash登入session有效,它是存在記憶體裡面的。
對於這個的解釋,我們可以在做實驗,例如我在c中呼叫system(export test=$test:/hello);執行a.out後, 命令列執行printenv | grep test ,是沒有結果的。 因為system相當於,fork然後執行了乙個shell,呼叫完system,也就執行完了shell,export也就沒了
1 /etc/profile
2 .bash_profile
其中,/etc/profile是全域性的環境變數,對所有使用者生效,而.bash_profile只對當前使用者啟作用。
Linux下環境變數設定的三種方法
linux下環境變數設定的三種方法 如想將乙個路徑加入到 path中,可以像下面這樣做 1 控制台中設定,不贊成這種方式,因為他只對當前的shell 起作用,換乙個shell設定就無效了 path path new path 關閉shell path會還原為原來的path 2 修改 etc prof...
linux修改環境變數的三種方式
1.path path etc apache bin 使用這種方法,只對當前會話有效,也就是說每當登出或登出系統以後,path 設定就會失效 2.vi etc profile 在適當位置新增 path path etc apache bin 注意 即等號兩邊不能有任何空格 這種方法最好,除非你手動強...
Linux配置環境變數的三種方法
linux下環境變數設定的三種方法 如想將乙個路徑加入到 path中,可以像下面這樣做 1 控制台中設定,不贊成這種方式,因為他只對當前的shell 起作用,換乙個shell設定就無效了 path path new path 關閉shell path會還原為原來的path 2 修改 etc prof...