網(wǎng)站建設(shè) 模板中心如何創(chuàng)建網(wǎng)站?
環(huán)境變量
再Linux操作系統(tǒng)中一切皆文件,這個(gè)環(huán)境變量自然也是一個(gè)文件,它的作用是輔助我們使用操作系統(tǒng)還可以辨識(shí)我們是什么用戶(一般用戶,root用戶)。
env是讀取完整環(huán)境變量的指令,里面記錄了許多我登錄操作系統(tǒng)所用的用戶的信息,如
這里顯示我的用戶名字是ljj1,通過ssh的方式鏈接本地和遠(yuǎn)程的IP地址和端口號(hào)也有。這是當(dāng)我通過SSH鏈接這個(gè)服務(wù)器時(shí)自動(dòng)添加的環(huán)境變量。
這個(gè)表示我當(dāng)前登錄所使用的終端信息,當(dāng)然這個(gè)也是一個(gè)文件只要我們像這個(gè)文件寫入就可以在我這個(gè)設(shè)備上顯示寫入的信息。
我們平時(shí)編譯程序時(shí)需要鏈接動(dòng)靜態(tài)庫,但是我們并沒有在編譯時(shí)標(biāo)明動(dòng)靜態(tài)庫在哪,就是因?yàn)榄h(huán)境變量里也包含了通用的庫的地址這是,庫是操作系統(tǒng)本身就包含的。
這個(gè)就是動(dòng)態(tài)庫的地址,當(dāng)編譯器編譯程序時(shí)會(huì)通過此路徑找到相應(yīng)的庫進(jìn)行鏈接。
這個(gè)用戶并不是root用戶,只是一個(gè)普通用戶,所以會(huì)有一個(gè)根目錄與root會(huì)有所不同
這個(gè)就是用戶的根目錄
小結(jié):環(huán)境變量里面還有一些其他的變量信息如會(huì)話ID(session),編碼信息,顏色編碼等。若我們進(jìn)入一個(gè)操作系統(tǒng),但是沒有環(huán)境變量的話使用起來會(huì)有多么的繁瑣,當(dāng)我們需要查看當(dāng)前路徑下的文件信息需要輸入 /usr/bin/ls -la,但是有了環(huán)境變量能讓我們方便需要甚至不需要直到這個(gè)程序在哪里或者動(dòng)靜態(tài)庫在哪里,查看文件信息只需要 ls -la,編譯只需要gcc或者g++加上文件名就可以。
更改添加環(huán)境變量
我們知道了當(dāng)我們執(zhí)行l(wèi)s指令時(shí)實(shí)際上也是執(zhí)行一個(gè)程序,只不過環(huán)境變量里面包含了程序所在的路徑所以我們可以直接使用,那我們平時(shí)編譯完一個(gè)程序時(shí)執(zhí)行程序需要在命令行里面輸入路徑加程序名但是有了環(huán)境變量我們就不再需要輸入路徑,只需要程序名就可以了。
如圖這里我們只需要添加我們當(dāng)前目錄的路徑就可以直接使用了
即使我們并不在當(dāng)前目錄也可以,因?yàn)闀?huì)在這個(gè)環(huán)境變量的路徑上尋找這個(gè)程序。
環(huán)境變量是設(shè)計(jì)好也是操作系統(tǒng)非常重要的一些變量,一般情況是不太建議去修改,因?yàn)榭赡苄薷闹缶筒恢栏裁次募?#xff0c;程序重合產(chǎn)生一些意想不到的bug,若是需要修改這里建議使用export修改
這里可以理解為給PATH重新賦值,賦上舊PATH的值然后用:分割再加上你需要添加的絕對(duì)路徑完成添加。注意export修改是臨時(shí)的只對(duì)當(dāng)前會(huì)話有效,若你重新開一個(gè)終端或者重新登錄就恢復(fù)原樣了,export是內(nèi)存級(jí)的,是修改的內(nèi)存中操作系統(tǒng)的環(huán)境變量,而環(huán)境變量本身的文件是沒有修改的,若要永久修改就需要找到 .bashrc文件
需要直接在文件里面進(jìn)行修改,文件在~目錄下,用戶會(huì)在其自己的目錄下有一個(gè)環(huán)境變量的文件。上面用的是root賬號(hào)。
當(dāng)我是用戶的時(shí)候只需要在我用戶賬號(hào)的根目錄下就可以找到這個(gè)文件。
程序中的環(huán)境變量
我們的主函數(shù)是有參數(shù)的一共三個(gè)第一個(gè)是指令數(shù),例如我們在外面使用ls程序會(huì)輸入ls -l -a這里一共三個(gè)指令分別是程序名,-l選項(xiàng)和-a選項(xiàng)這三個(gè)就會(huì)傳遞給主程序,這里的argc就是3,第二個(gè)參數(shù)就是一個(gè)字符串指針數(shù)組,每個(gè)指針都分別指向“l(fā)s”“-l”“-a”這三個(gè)字符串。但其實(shí)操作系統(tǒng)還有一個(gè)參數(shù)會(huì)傳遞給程序就是環(huán)境變量,這里我們接收了第三個(gè)參數(shù)然后打印出來的結(jié)果就是
操作系統(tǒng)傳進(jìn)來的環(huán)境變量了,當(dāng)我們編譯的時(shí)候編譯器就能通過這個(gè)去找到相應(yīng)的鏈接庫和自己的工作路徑了,所以我們在同一個(gè)文件夾中進(jìn)行的鏈接是不需要指定鏈接的文件的路徑的。這個(gè)參數(shù)是具有全局性的,子進(jìn)程都會(huì)繼承下去。
本地變量
set是查詢本地變量的指令
當(dāng)我們沒有加export時(shí)就是直接加入一個(gè)本地變量,這里我們加入了一個(gè)本地變量MYPATH
用set查詢到了這個(gè)變量
在環(huán)境變量中是查詢不到的。
這里我們使用了一個(gè)程序進(jìn)行打印變量
但是子進(jìn)程中并沒有這個(gè)變量的。
所以我們得出結(jié)論本地變量只在當(dāng)前進(jìn)程中有效,此進(jìn)程分出的子進(jìn)程是不會(huì)繼承本地變量的。
我們使用操作系統(tǒng)都是需要一個(gè)命令行程序,通過輸入指令去指示操作系統(tǒng)工作,這個(gè)就是我們的外殼程序,也就是bash進(jìn)程,而我們輸入的指令所打開的程序就是這個(gè)程序的子程序。