视屏网站开发者工具无视频文件,广告发布包括哪些,提高工作效率图片,wordpress收不到注册邮件什么是环境变量
每个进程都有自己的一张环境变量表#xff0c;表中的每个条目都是形如 keyvalue 的键值对形式的环境变量。
进程可以通过环境变量访问计算机资源。
在终端下输入env命令#xff0c;可以查看环境变量列表。
通过echo $name 可以查看某个环境变量的值。
环…什么是环境变量
每个进程都有自己的一张环境变量表表中的每个条目都是形如 keyvalue 的键值对形式的环境变量。
进程可以通过环境变量访问计算机资源。
在终端下输入env命令可以查看环境变量列表。
通过echo $name 可以查看某个环境变量的值。
环境变量的类型
概述
环境变量分为
全局环境变量当前shell和其子进程都是可见的局部环境变量只有当前shell可见
将局部变量设置成环境变量
export name删除环境变量
unset name简单示例
设置局部环境变量
AB查看局部环境变量
echo $A将局部变量设置为环境变量
export A查找全局环境变量
env | grep A删除环境变量
unset A常用环境变量 PATH
概述
PATH存储了执行命令时系统中查询命令的路径。
临时修改PATH
临时将指定路径添加到PATH中。
PATH$PATH:/home/zhangdapeng/bin查看修改之后的环境变量
echo $PATH永久修改PATH
持久的配置PATH
vim ~/.bashrc追加环境变量的配置
PATH$PATH:/home/zhangdapeng/bin激活环境变量
source ~/.bashrc常用环境变量 PS1
概述
PS1用来影响提示符的内容。
查看 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
PS1\W\$环境变量表
概述
所谓环境变量表就是一个以NULL指针结束的字符指针数组。
其中每个元素都是一个字符指针指向一个以空字符串结尾的字符串该字符串就是形如 keyvalue 键值对形式的环境变量。
该指针数组的地址保存在全局变量environ中。
本质
environ本身是一个二级指针其中每个元素是个一级指针存储的时候字符串的首地址。
基础示例
示例代码查看进程中环境变量中所有的值。
#include stdio.hint main(){extern char** environ;for (char** pp environ; *pp; pp){printf(%s\n, *pp);}return 0;
}输出结果
SHELL/bin/bash
WSL2_GUI_APPS_ENABLED1
WSL_DISTRO_NAMEUbuntu-22.04
NAMEpc
PWD/home/zhangdapeng/code/helloc
LOGNAMEzhangdapeng
MOTD_SHOWNupdate-motd
HOME/home/zhangdapeng
LANGC.UTF-8
WSL_INTEROP/run/WSL/378_interop
...
WAYLAND_DISPLAYwayland-0
LESSCLOSE/usr/bin/lesspipe %s %s
TERMxterm-256color
LESSOPEN| /usr/bin/lesspipe %s
USERzhangdapeng
DISPLAY:0
SHLVL1
XDG_RUNTIME_DIR/run/user/1000/
...
HOSTTYPEx86_64
PULSE_SERVERunix:/mnt/wslg/PulseServer
_./test
OLDPWD/home/zhangdapeng/codemain函数第三个参数
概述
main函数实际上有三个参数其中第三个参数存储的也是环境变量表的起始地址。
基础示例
示例代码通过main函数的第三个参数查看环境变量表
#include stdio.hint 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;
}输出结果
从第一行输出结果我们可以看到全局变量environ和main函数第三个参数envp指向的内存地址是一样的通过envp也可以取出每个环境变量
0x7ffe553d7258, 0x7ffe553d7258SHELL/bin/bash
WSL2_GUI_APPS_ENABLED1
WSL_DISTRO_NAMEUbuntu-22.04
NAMEpc
PWD/home/zhangdapeng/code/helloc
LOGNAMEzhangdapeng
MOTD_SHOWNupdate-motd
HOME/home/zhangdapeng
LANGC.UTF-8
WSL_INTEROP/run/WSL/378_interop
...
WAYLAND_DISPLAYwayland-0
LESSCLOSE/usr/bin/lesspipe %s %s
TERMxterm-256color
LESSOPEN| /usr/bin/lesspipe %s
USERzhangdapeng
DISPLAY:0
SHLVL1
XDG_RUNTIME_DIR/run/user/1000/
WSLENV
XDG_DATA_DIRS/usr/local/share:/usr/share:/var/lib/snapd/desktop
...
DBUS_SESSION_BUS_ADDRESSunix:path/run/user/1000/bus
HOSTTYPEx86_64
PULSE_SERVERunix:/mnt/wslg/PulseServer
_./test
OLDPWD/home/zhangdapeng/code