environ和getenv函數(shù)
????????在Linux中,environ是一個(gè)全局的外部變量,其類型為char**,存儲著系統(tǒng)的環(huán)境變量。除了使用主函數(shù)中的第三個(gè)參數(shù)外,我們也可使用environ函數(shù)直接訪問系統(tǒng)的環(huán)境變量。
????????注意:這里在代碼內(nèi)部使用environ時(shí),需要先定義environ。在系統(tǒng)下的libc中定義的全局變量environ指向環(huán)境變量表,environ沒有包含在任何頭文件中,所以在使用時(shí)要用extern聲明。定義如下:
extern char **environ;
????????getenv是通過指定的環(huán)境變量名稱來獲取環(huán)境變量,在頭文件<stdlib.h>中。
環(huán)境變量表
? ? ? ? 環(huán)境變量表簡稱環(huán)境表,它是一個(gè)存儲環(huán)境變量的數(shù)據(jù)結(jié)構(gòu),類似于一個(gè)數(shù)組,其中每個(gè)元素都是一個(gè)環(huán)境變量,而environ指針指向的就是存放環(huán)境變量的數(shù)據(jù)結(jié)構(gòu),而getenv指向表中指定名稱的環(huán)境變量。
? ? ? ? 下面代碼通過使用environ來獲取系統(tǒng)下的所有環(huán)境變量。
#include <iostream>
#include <unistd.h>
using namespace std;
int main()
{
? ? extern char **environ;
? ? for (int i = 0; environ[i]; i++)
? ? {
? ? ? ? cout << "environ[" << i << "]: " << environ[i] << endl;
? ? }
? ? return 0;
}
? ? ? ? 下面使用getenv獲取表中的指定名稱的環(huán)境變量
[zhujunhao@bogon code]$ cat code.cpp
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
int main()
{
? ? char*s = getenv("PATH");? ?//訪問PATH環(huán)境變量
? ? cout << s << endl;
? ? return 0;
}
[zhujunhao@bogon code]$ g++ -o code.exe code.cpp[zhujunhao@bogon code]$ ./code.exe
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/zhujunhao/.local/bin:/home/zhujunhao/bin
[zhujunhao@bogon code]$ echo $PATH? ?//可看出,代碼輸出的內(nèi)容與之相同
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/zhujunhao/.local/bin:/home/zhujunhao/bin
?
環(huán)境變量的存放
????????Linux系統(tǒng)下的環(huán)境變量天然都會(huì)被保存在磁盤的文件中。只有登入系統(tǒng)時(shí),bash/shell進(jìn)程才會(huì)存在,也就是說只有登入系統(tǒng)的時(shí)候,才會(huì)分配bash/shell程序,而環(huán)境變量就在bash/shell的上下文中。當(dāng)開始登入系統(tǒng)時(shí),所有的環(huán)境變量都是從磁盤中的某些腳本或配置文件中來的。因此,每當(dāng)重啟系統(tǒng)時(shí),環(huán)境變量都會(huì)被更新。
? ? ? ? 通常,我們可以使用 set 指令顯示本地定義的shell變量和環(huán)境變量,但要注意的是,本地定義的shell變量不能被子進(jìn)程進(jìn)行下去,它只在本地bash內(nèi)部有效。
? ? ? ? 下面我們來認(rèn)識一下?bash_profile 文件。
????????在Linux系統(tǒng)中,.bash_profile
是一個(gè)Shell腳本文件,它被用于在用戶登錄時(shí)設(shè)置用戶的環(huán)境變量和配置選項(xiàng)。它是bash或shell的配置文件之一,通常位于用戶的家目(~/.bash_profile
)
????????當(dāng)用戶登錄時(shí),bash_profile
文件會(huì)被自動(dòng)執(zhí)行,允許用戶設(shè)置環(huán)境變量等。通過編輯bash_profile
文件,用戶可以定制自己的shell會(huì)話環(huán)境,以便更方便地使用命令行工具和應(yīng)用程序。下面是代碼演示:
首先,我們要進(jìn)行配置環(huán)境變量
[zhujunhao@bogon ~]$ cat .bash_profile
//下面是系統(tǒng)下的源代碼
# .bash_profile# Get the aliases and functions
if [ -f ~/.bashrc ]; then
?? ?. ~/.bashrc
fi# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
//下面是我們設(shè)置的一個(gè)簡單的環(huán)境變量MY
MY=yiyezhiqiu
export MY?
因?yàn)楫?dāng)系統(tǒng)啟動(dòng)時(shí),環(huán)境變量就已執(zhí)行,因此,配置完畢之后要重啟系統(tǒng)才可被運(yùn)行文章來源:http://www.zghlxwxcb.cn/news/detail-802761.html[zhujunhao@bogon ~]$ echo $MY
yiyezhiqiu文章來源地址http://www.zghlxwxcb.cn/news/detail-802761.html
到了這里,關(guān)于【Linux系統(tǒng)編程】環(huán)境變量的組織方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!