Linux 环境变量梳理
Linux中的环境变量有两种:全局变量和局部变量;
定义、访问、删除局部变量
查看全局变量
可以使用printenv或者env命令来打印所有的全局变量。
访问某一项全局变量,可以使用printenv key,或者echo $key
上面的这些全局变量,无论是本次打开的命令行界面中(其实就是当前进程),还是另外在打开一个命令行界面,这些值都可以使用相同的命令访问,并且值都是一样的,这样的变量叫全局变量。
设置全局变量
注意设置全局变量之后,要使用export将其导入到全局变量,否则会被认为是一个局部变量。
此时,如果在打开另外一个命令行窗口,即另外一个进程,那么是访问不到定义的全局变量MYGLOBALVAR。该全局变量会在定义该变量的进程结束后销毁。
要想让自己定义的全局变量让所有的命令行窗口共享,可以将声明全局变量的命令写在$HOME/.bashrc里面。
比如:注意最后一行
至于为什么要写在这个文件中,可以自行百度一下shell终端加载配置文件的顺序。
之后执行. .bashrc或者source .bashrc命令让配置生效,之后打开的命令行窗口(进程)就可以访问到该全局变量,但是之前打开的窗口(在定义全局变量之前就开始的进程),不能访问到现在定义的全局变量。
注意点
1、无论是定义局部变量还是全局变量,格式都是相同的,key=value,等号两边没有空格
2、访问局部变量和全局变量的都一项都可以使用echo $key。
3、全局变量和局部变量都可以使用unset来删除,需要注意的是,此时变量名不要加$。
4、只有在访问变量的值的时候,才在变量名前加$,其他情况,比如赋值、删除、导出都不加$。有一个除外,printenv访问全局变量不要$。
5、全局变量比局部变量多了一个export命令,不进行export,始终是局部变量。
6、全局变量如果不写在.bashrc中,那么生命周期只限于当前进程结束前有效。
易错点(变量的作用范围)
局部变量的作用范围只限于当前进程。当前进程的子进程不能访问父进程中定义的局部变量。
全局变量的作用范围是当前进程,以及当前进程的后代进程(子进程,子进程的子进程...)
全局变量持久化操作后(声明在.bashrc中),任何进程都能访问,任何进程的任何子进程也都可以访问。