linux-环境变量
环境变量是系统提供的一组 name = value 的变量,不同的变量有不同的用途,通常都具有全局属性
env
查看环境变量
PATH
PATH是一个保存着系统指令路径的一个环境变量,系统提供的指令不需要路径,直接就可以使用就是因为指令的路径被保存在了这个环境变量里,在调用指令的时候,会在这个环境变量所保存的路径一个个去找,找不到会报错。
用$就可以查看环境变量里的内容,可以看到每个路径都是用:来分割的。
修改
PATH = 路径。
这种方法是覆盖原本路径,可以这样写
PATH = $PATH:路径
命令行参数
int main(int argc,char* argv[],char* env[])
main函数也是可以有参数的,argc是一个整数(至少为1),是执行指令和选项的总数(至少也有一个执行指令),argv则是一个保存着字符串的指针数组,保存着执行指令和选项,argv会在最后一个指针后面加上一个null。
env是一个环境变量数组
env的结构和argv是一样的,在结尾也会加上null
例:
有两个选项,argc是3,argv[0],arg[1],argv[2],都保存着字符串的地址,argv[3]就是null
环境变量是可以从父进程那边继承下来的,所以每个进程的环境变量都是继承自bash进程的同一份环境变量,所以说环境变量有全局属性。子进程继承下来环境变量想要修改会导致写实拷贝,而在创建子进程之前父进程修改环境变量,那么修改后的环境变量是可以让子进程继承的。
创建和取消环境变量
格式:
创建:
export name(环境变量名) = value (环境变量内容)
不加export就是本地变量。
export 本地变量名 可以直接将本地变量变为环境变量
取消:
unset name(环境变量名)
environ这个变量可以直接找到父进程的环境变量表,只需要在代码声明:
extern char** environ;使用方法和env使用方法一样