歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux如何處理當前運行環境的環境變量

GNU/Linux下面每個程序運行都有一個所謂的運行環境,這裡的環境實際上就是一組變量的定義。所有的變量和他們的值都是字符串形式表達的。通過轉換,通常變量名字都是用大寫字符表達。

對於環境變量大家都不陌生,例如,我們都很熟悉的HOME這個環境變量,這個變量指示的當前用戶的個人用戶目錄的路徑。又例如,PATH這個環境變量,它指示出當前Linux系統搜索的的執行文件的路徑列表。

對於我們在Linux下常用的BASH這個shell程序,它有自己的一套管理環境變量的方法。例如,通過$NAME來訪問相應的環境變量,通過export來設置環境變量,下面是一個實例:

[hwang@langchao linuxprogram]$ echo $HOME
/home/hwang
[hwang@langchao linuxprogram]$ export MYNAME="Luster"
[hwang@langchao linuxprogram]$ echo $MYNAME
Luster
[hwang@langchao linuxprogram]$

而在我們的應用程序裡面,如果需要訪問一個環境變量,我們可以通過getenv()這個函數來實現,getenv這個函數在這個頭文件中聲明。這個函數的輸入參數是需要訪問的變量名字,得到的返回值是一個字符串,如果所訪問的環境變量沒有設置,則會返回NULL。如果需要在程序裡面設置某個環境變量,則可以使用setenv這個函數,如果是要清除某個特定的環境變量,則使用unsetenv這個函數。它們的函數原型如下:

#include
char *getenv(const char *name);
int setenv(const char *name, const char *value, int overwrite);
void unsetenv(const char *name);

值得一提的是,GNU C函數庫裡面有一個特殊的全局的變量,名字叫做environ,這個變量的類型是char **,它所指向的是所有的環境變量的一個列表,最後是以NULL結尾。每個字符串都是“VALUE=value”這樣的形式。例如下面的程序可以打印出當前運行環境裡面的所有的環境變量:

#include
extern char**environ;
int main ()
{
char**var;
for (var =environ;*var !=NULL;++var)
printf (“%s 
“,*var);
return 0;
}

注意,如果你需要修改某個環境變量,不要直接修改environ這個變量,而應該使用setenv或者unsetenv這樣的管理函數來做這件事情。

一般來說,當一個程序啟動的時候,它就會拷貝一份啟動它的“父”程序所擁有的環境變量。環境變量是GNU程序常用來配置某個應用程序的行為的一個方法,例如,通過環境變量來設置HTTP代理服務器的地址和端口號等等。下面是一段代碼的演示:

#include
#include
int main ()
{
char *server_name =getenv (“SERVER_NAME ”);
if (server_name ==NULL)
server_name =“server.my-company.com ”;
printf (“accessing server %s 
”,server_name);
return 0;
}

Copyright © Linux教程網 All Rights Reserved