环境变量
1.分类
(1)局部(临时)环境变量
在所运行的脚本或 shell 中存在
(2)用户环境变量
在当前登录的用户环境中存在
(3)系统环境变量
在当前系统中存在,可以被任意用户、脚本或 shell 访问到
2.访问顺序
局部-->用户-->系统
3.Windows下
(1)临时环境变量
设置变量使用set指令
set a=1
echo %a%
set的环境变量仅在当前cmd窗口下有效,并且会随着cmd的关闭而释放;如需永久保留环境变量,则需要在系统设置中配置并保存。
(2)全局环境变量
它分为用户环境变量和系统环境变量。
用户环境变量:仅在当前用户登录的环境下起作用,如切换成其他用户,那么其环境变量也随之发生变化。
系统环境变量:不管是哪个用户登录在当前系统中,都共享使用的环境变量。
计算机系统属性-->高级-->环境变量
.bat文件是Windows系统中的批处理文件。在文件夹内新建一个bat为后缀名的文件,此时该文件内没有内容无法打开,右击选项用Notepad编辑。
在该文件夹内使用cmd命令,输入建好的bat文件,会显示之前编辑的命令。
cmd命令能直接用是因为在windows下有system32的cmd.exe
直接双击1.bat运行结束后会关闭该文件;而用cmd打开,因为cmd没关闭,局部变量还在。
4.Linux下
(1)shell
全称Shell Script,是一种命令行解释程序,也称为脚本语言。它是操作系统提供给用户与内核交互的一种接口,允许用户通过文本文件形式编写一系列指令集合。
反引号`:将命令的返回值赋给变量
示例:A=`date`
A$(date): 等价于反引号
(2)环境变量常见的指令
ls:列出目录内容。 ls -l=ll | -l:以长列表格式显示信息。这包括文件的权限、链接数、所有者、组、大小、最后修改日期和文件名。 -a:显示所有文件,包括以.开头的隐藏文件。 |
echo:显示某个环境变量值 | |
export:设置一个新的环境变量 | 使用 export:这个变量不仅在当前 shell 进程中有效,而且在其子进程中也是可见的;反之则仅在当前shell进程中有效 |
pwd:打印工作目录 | 显示你当前所在的目录的完整路径 |
grep过滤 | |
PATH | PATH 环境变量的值是一系列目录的路径,这些路径之间用冒号分隔。 |
chmod改变访问权限 | +x 用于给文件或目录添加执行(execute)权限 |
(3)临时环境变量
Shell 变量名在定义时,首个字符必须为字母(a-z,A-Z),不能以数字开头,中间不能有空格,可以使用下划线 _ ,不能使用 - ,也不能使用标点符号等。
直接a=1,不用set命令;清除变量使用unset命令
(4)用户环境变量
.bashrc | 这个文件用于配置与 Bash Shell 相关的环境变量和个性化设置,如命令别名、PATH 环境变量的设置、命令提示符的格式等。它会在每次启动新的非登录 Shell 时自动执行。 |
.bash_profile(或 .profile) | 这个文件用于配置登录 Shell 的环境变量,它会在用户登录时执行一次。 |
(5)系统环境变量
/etc/environment | 在系统启动时被读取,并且对所有用户生效。 |
/etc/profile | 在用户登录时被读取 |
/etc/profile.d/ | 这个目录下存放了一系列的 shell 脚本文件,每个文件都可以设置一些环境变量,被读取时会自动执行 |
/etc/bash.bashrc | 在新的 Bash shell 启动时被读取 |
/etc/sysconfig | 这个目录下有一些特定的配置文件,也可以设置一些环境变量。 |
(6) source命令
source 命令在 Linux 系统中用于在当前 shell 会话中执行指定的脚本文件,从而使得脚本文件中的命令和变量设置立即生效。换句话说,source 命令可以让你在不重新启动 shell 的情况下,直接应用脚本文件中的更改。
示例:
在家目录下使用nano对.bashrc进行编辑,写入aaa=111,编辑完成保存退出。直接echo不显示变量值。在Terminal直接输入bash命令,用于启动一个新的Bash shell会话,此时使用echo可以得到变量值。还可以使用source命令直接应用脚本文件中的更改,此时使用echo也可以得到变量值。
在etc目录下使用cd命令进入profile.d(脚本文件),通过nano 新建名为hello.sh的文件并开始编辑,编辑的内容为hello="hello world",保存退出后用ls和ll -a查看,可以看到有hello.sh文件。回到etc目录,使用source命令,使我们配置的内容得到应用,使用echo显示变量值。
在家目录下使用mkdir命令新建一个test文件,进入test目录,使用nano新建一个hello.sh文件,编辑内容为AAA="HEI MA LOU",echo $A,保存退出。执行文件之后,发现没有执行权限。用chmod命令修改该文件的执行权限,使之成功执行。在家目录下直接./hello.sh执行不了因为给的相对路径它识别不了,换成绝对路径就能执行了。或者直接用nano编辑.bash_profile文件里面的PATH,用source使之生效,这时直接使用hello.sh能直接执行了。
思维导图如下