1. 程式人生 > >關於環境變數的函式及相關命令

關於環境變數的函式及相關命令

基本概念:

     環境變數一般指在作業系統中用來指定作業系統執行環境的一些引數。

     通常具有某些特殊用途,在系統中通常具有全域性特性。

常見的環境變數:(可由父程序傳遞給子程序)

    -PATH*:指定目錄的搜尋路徑

    -HOME*:指定使用者的主工作目錄

    -HISTSIZE*:指儲存歷史命令記錄的條數

    -SHELL*:當前shell

操作環境變數的一些命令

1.echo   //顯示某個環境變數值

例:echo $PATH    //打印出搜尋路徑

2.export  //設定一個新的環境變數

例:export PATH=$PATH:檔案的絕對路徑

3.env    //顯示所有環境變數

4.set   //顯示本地的shell變數和環境變數

5.unset  //清楚環境變數

例:unset PATH  //就會找不到命令搜尋路徑

-命令列第三個引數獲取環境變數

 #include  <stdio.h>
 int main(int argc,char* argv[],char* env[])  
                    //env是一個指標陣列,每個指標指向一個環境字串
 {
     int i=0;
     for(;env[i];i++){
         printf("%s\n",env[i]);
      }                                                                                                                       
     return 0;
 }

 -通過第三方變數獲取

注意:libc中定義的全域性變數environ指向環境變量表,environ沒有包含在任何標頭檔案中,所以要用extern宣告

#include <stdio.h>
int main(int argc,char* argv[])
{
    extern char** environ;
    int i=0;
    for(;environ[i];i++)
    {
        printf("%s\n",environ[i]);

    }
    return 0;
}

-通過系統呼叫獲取環境變數

1 #include <stdio.h>
2 #include <stdlib.h>
3 int main()
4 {
5     printf("%s\n",getenv("PATH"));  //獲取PATH環境變數                      
6     return 0;
7 }

環境變數通常具有全域性屬性,可以被子程序繼承下去

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 int main()
  4 {
  5     char* env = getenv("MYENV");                                          
  6     if(env)
  7         printf("%s\n",env);
  8     return 0;
  9 }

直接執行沒有結果

在命令列執行:  export  MYENV="hello bit"

發現有結果了,說明:環境變數可以被子程序繼承下去