见一见环境变量:
查看环境变量的命令
命令行:
echo &PATH
echo &HOME
env
ps ajx
ps aux
ps -f -o pid
code.c中获取环境变量
main(char* env[])
char* getenv(env_name)
本地变量
shell中定义变量为本地变量
i=10
a=100
等,shell会自动保存这些变量
命令行调用/查看本地变量
echo &a
echo &i
env查不到本地变量
set可以查到环境变量&本地变量
export b=100
unset b=100 取消环境变量
bash进程环境变量创建
当我们登陆时,bash会读取环境变量文件,bash也是一个进程,设置自己cwd为HOME(使用chdir)
bash的cwd会根据cd改变(保持与$PED相同)
命令行执行的命令,父进程都是bash
所以命令行中相对路径都是以当前目录为起点
环境变量 vs 本地变量
本地变量一般给shell自己用
export a将a变量导入为环境变量
环境变量可以被子进程继承,本地变量不能
bash进程不仅存储env&args,还会存储本地变量表,export将本地变量表迁移到环境变量表env中
bash关闭后env中export导入变量会消失
因为export只是存储在bash只记得env中,而不是配置文件。新建bash会从配置文件读取env
环境变量作用示例
环境变量具有全局性
环境变量可以被所有bash下子进程(包括子进程fork的子进程)继承,因此环境变量具有全局性
为什么要有环境变量
描述系统的配置信息,尤其是具有指导性的配置信息,是系统配置起效的一种表现
可用于进程间传递数据
environ
extern char** environ 声明environ
char* environ[] C提供的全局变量