Linux环境变量
常见变量表格
| 变量名 | 含义/相关命令 |
|---|---|
| PATH | 执行程序必须先找到他,环境变量帮助系统找到目标二进制文件 PATH是系统搜索指令的默认路径 env查看系统中所有的环境变量 名字=内容 echo $[变量名]通过环境变量名获得变量内容 PATH=$PATH:[路径]将路径添加至环境变量 程序运行,bash会形成环境变量表,bash拿到命令后构建命令行参数表, 用名字通过PATH索引对应的程序路径,执行程序 |
| HOME | 默认家目录路径 |
| SHELL | shell的路径 |
| USER | 登录用户 在使用 su 的时候USER和LOGNAME变量不会更新,只是身份具有root权限 使用 su - 的时候会更新环境变量 |
| HISTSIZE | 记录最新历史命令的个数 |
| OLDPWD | 上一次的pwd路径,使用 cd - 进行切换 |
| export [变量名]=[变量值] | 创建一个环境变量 |
| unset [变量名] | 取消环境变量 |
代码操作
获取环境变量方法:
通过main参数列表
main函数的参数最多有三个 (int argc,char *argv[],char *env)
env由父进程提供,结尾是null
!!! 可执行程序的入口函数不是main函数,在linux中是_start函数,windows中是_crtStart
_start会先扫描main的参数列表,针对参数个数执行不同的动作
环境变量是由父进程提供的,可以被继承,因此环境变量在系统中通常有全局特性getenv(“指定变量名”) stdlib.h
char*变量接收返回值,直接获取指定变量名的值
全局变量 char **environ[];
其他内容
bash会存储两套变量:1.环境变量 2.本地变量
环境变量具有全局性
内建命令:不通过创建子进程,而是由bash自己执行,例如export
因此通过**export**可以让子进程创建变量交给父进程
通过.sh脚本文件,用bash指令执行可以批量化执行shell命令,以 #!/bin/bash 为首行