Windows下的環境變數

文章目錄
- 1.環境變數概念
- 2.Linux下的環境變數
- 常見的環境變數的查看(PATH,HOME,SHELL)
- 匯入環境變數(export)
- linux環境變數全查看(env)
- 3.Linux下創建環境變數(export)
- Linux下取消添加的環境變數(unset)
- 4.通過代碼獲得Linux中的環境變數
- 命令列引數
- 代碼查看環境變數資訊
- environ獲取環境變數
1.環境變數概念
環境變數:一般是指在作業系統中用來指定作業系統運行環境的一些引數
如:我們在撰寫C/C++代碼的時候,在鏈接的時候,從來不知道我們的所鏈接的動態靜態庫在哪里,但是照樣可以鏈接成功,生成可執行程式,原因就是有相關環境變數幫助編譯器進行查找,
環境變數通常具有某些特殊用途,還有在系統當中通常具有全域特性
2.Linux下的環境變數
當我們生成可執行程式時,想要運行必須指定運行路徑,但是像Linux下的命令如ls可以不指定運行路徑

如上圖,自己的可執行程式與系統的ls命令都是可執行程式,
其原因是是有相關環境變數幫助編譯器進行查找,
常見的環境變數的查看(PATH,HOME,SHELL)
HOME的查看
echo $HOME

標記的了系統登錄的初始目錄,不同用戶的HOME不同
SHELL的查看
echo $SHELL
查看系統命令列命令列解釋器的種類
centos中為bash

PATH的查看
echo $PATH

在輸入ls時會查找PATH中的路徑,因為ls路徑在PATH中所以可以不加路徑,這些路徑之間以:相隔
所以如果想讓自己生成的可執行程式可以直接執行
方法一:
可以將其放到PATH中的目錄檔案夾中

測驗后要記得在路徑下洗掉這個可執行程式,否則會污染工具集

匯入環境變數(export)
方法二:
將當前可執行程式路徑匯入到環境變數中
eg:將路徑匯入到PATH中
export PATH=$PATH:路徑…
這里表示環境變數PATH值為原來PATH值+路徑
因為PATH中以:相隔
export PATH=路徑
則表示PATH中只有一條路徑,原來的PATH值沒有在新PATH中



如上圖,此時PATH中只有一條路徑,此時ls也必須加路徑才可以運行

此時重新登錄云服務器PATH會恢復
linux環境變數全查看(env)

3.Linux下創建環境變數(export)
export + 變數名=變數值

注意:如果不加export
變數名=變數值
此時這個變數稱為本地變數,本地變數只能在本行程(bash)中使用
export+本地變數名就可以將本地變數變為環境變數

環境變數可以被其他行程獲取
Linux下取消添加的環境變數(unset)
unset+變數名

4.通過代碼獲得Linux中的環境變數
命令列引數

如上圖argv與envp都是指標陣列,argv的大小為argc個,envp陣列存放的是指向環境變數的指標


發現運行時跟不同的后綴,argv不同
其中-a -b -c稱為命令列引數,其被保存到argv這個指標陣列中
1 #include<stdio.h>
2
3 #include<string.h>
4
5 int main(int argc,char*argv[],char*envp[])
6 {
7 if(argc==1)
8 {
9 printf("Hello Linux -NULL\n");
10 }
11 else
12 {
13 if(strcmp(argv[1],"-a")==0)
14 {
15 printf("Hello Linux -a\n");
16 }
17 else if(strcmp(argv[1],"-b")==0)
18 {
19 printf("Hello Linux -b\n");
20 }
21 else
22 {
23 printf("Hello Linux -else\n");
24 }
25 }
26
27 return 0;
28 }
運行結果為

代碼查看環境變數資訊


驗證:

environ獲取環境變數
environ是定義在C語言庫的全域變數,使用時要extern宣告

運行結果為環境變數的值
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/303043.html
標籤:其他
