歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> Linux如何處理當前運行環境的環境變量

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

日期:2017/2/27 14:11:53   编辑:更多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