赞
踩
每个进程都有自己的一张环境变量表,表中的每个条目都是形如 key=value 的键值对形式的环境变量。
进程可以通过环境变量访问计算机资源。
在终端下输入env命令,可以查看环境变量列表。
通过echo $name 可以查看某个环境变量的值。
环境变量分为:
将局部变量设置成环境变量:
export name
删除环境变量:
unset name
设置局部环境变量:
A=B
查看局部环境变量:
echo $A
将局部变量设置为环境变量:
export A
查找全局环境变量:
env | grep A=
删除环境变量:
unset A
PATH:存储了执行命令时,系统中查询命令的路径。
临时将指定路径添加到PATH中。
PATH=$PATH:/home/zhangdapeng/bin
查看修改之后的环境变量:
echo $PATH
持久的配置PATH:
vim ~/.bashrc
追加环境变量的配置:
PATH=$PATH:/home/zhangdapeng/bin
激活环境变量:
source ~/.bashrc
PS1:用来影响提示符的内容。
echo $PS1
# 输出
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
PS1='\W\$'
所谓环境变量表就是一个以NULL指针结束的字符指针数组。
其中每个元素都是一个字符指针,指向一个以空字符串结尾的字符串,该字符串就是形如 key=value 键值对形式的环境变量。
该指针数组的地址保存在全局变量environ中。
environ本身是一个二级指针,其中每个元素是个一级指针,存储的时候字符串的首地址。
示例代码:查看进程中环境变量中所有的值。
#include <stdio.h>
int main(){
extern char** environ;
for (char** pp = environ; *pp; pp++){
printf("%s\n", *pp);
}
return 0;
}
输出结果:
SHELL=/bin/bash WSL2_GUI_APPS_ENABLED=1 WSL_DISTRO_NAME=Ubuntu-22.04 NAME=pc PWD=/home/zhangdapeng/code/helloc LOGNAME=zhangdapeng MOTD_SHOWN=update-motd HOME=/home/zhangdapeng LANG=C.UTF-8 WSL_INTEROP=/run/WSL/378_interop ... WAYLAND_DISPLAY=wayland-0 LESSCLOSE=/usr/bin/lesspipe %s %s TERM=xterm-256color LESSOPEN=| /usr/bin/lesspipe %s USER=zhangdapeng DISPLAY=:0 SHLVL=1 XDG_RUNTIME_DIR=/run/user/1000/ ... HOSTTYPE=x86_64 PULSE_SERVER=unix:/mnt/wslg/PulseServer _=./test OLDPWD=/home/zhangdapeng/code
main函数实际上有三个参数,其中第三个参数存储的也是环境变量表的起始地址。
示例代码:通过main函数的第三个参数查看环境变量表
#include <stdio.h>
int main(int argc, char* argv[], char* envp[]){
extern char** environ;
printf("%p, %p\n", environ, envp);
char** pp;
for (pp = envp; *pp; pp++){
printf("%s\n", *pp);
}
return 0;
}
输出结果:
0x7ffe553d7258, 0x7ffe553d7258 SHELL=/bin/bash WSL2_GUI_APPS_ENABLED=1 WSL_DISTRO_NAME=Ubuntu-22.04 NAME=pc PWD=/home/zhangdapeng/code/helloc LOGNAME=zhangdapeng MOTD_SHOWN=update-motd HOME=/home/zhangdapeng LANG=C.UTF-8 WSL_INTEROP=/run/WSL/378_interop ... WAYLAND_DISPLAY=wayland-0 LESSCLOSE=/usr/bin/lesspipe %s %s TERM=xterm-256color LESSOPEN=| /usr/bin/lesspipe %s USER=zhangdapeng DISPLAY=:0 SHLVL=1 XDG_RUNTIME_DIR=/run/user/1000/ WSLENV= XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop ... DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus HOSTTYPE=x86_64 PULSE_SERVER=unix:/mnt/wslg/PulseServer _=./test OLDPWD=/home/zhangdapeng/code
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。