1. 查看系统环境变量
#env
2.变量类型
永久的:需要修改配置文件,变量永久生效
linux变量文件有/etc/environment 、 /etc/profile、/etc/bash.bashrc
~/.profile 、 ~/.bashrc, ~/.bash_profile(一般是用户在自己目录下新建的),/.bash_logout
临时的:使用export命令声明即可,变量在关闭shell时失效
3. export
export [选项-fnp] 参数
-f:代表[变量名称]中为函数名称;
-n:删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中;
-p:列出所有的shell赋予程序的环境变量。
一个变量创建时,它不会自动地为在它之后创建的shell进程所知(即变量名=变量,只在当前shell生效,子shell不生效),export命令可以用于传递一个或多个变量的值到任何后继脚本(export 变量名=变量值),export命令的作用是使得环境变量对于该shell进程的子进程生效,其他shell不生效
4.source
source [文件名] [参数]
在当前Shell环境中从指定文件读取和执行命令,命令返回退出状态,source命令的作用是把 source后面跟的文件内容在当前shell进程中执行,文件的变量等会在当前shell生效
[root@localhost ~]# source ~/.bash_profile
可使得配置文件~/.bash_profile中的环境变量在当前shell临时生效;
eg:
#vi 1.sh //1.sh内容如下:
#!/bin/bash
AA=111
echo $AA
#chmod +x 1.sh //给1.sh脚本加权限
#./1.sh //输出111,只在子shell中生效, 子1
#echo $AA //没有内容,当前父shell不生效
#source 1.sh //source 命令的作把文件内容在当前shell进程(父进程)中执行,即在当前shell生效
#echo $AA //输出111,在父shell执行echo
再创建其他子shell,则不会生效,执行source,相当于在当前shell执行,其他子shell生效
#vi 2.sh ,内容如下:
#!/bin/bash
echo $AA
#chmod +x 2.sh
#./2.sh //没有内容
#source 2.sh //输出111, 相当于 子1->父shell->子2
如果想直接执行./2.sh生效,则需要将1.sh中变量赋值添加export,
即: export AA=111,
#source 1.sh //子1->父shell
#./2.sh //输出111, 父shell->子2
因为export命令的作用是使得环境变量对于该shell进程的子进程生效,所以直接执行./2.sh则能输出111