环境变量
概念
环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数
环境变量的分类
环境变量分为三种:局部(临时)环境变量、用户环境变量、系统环境变量
局部(临时)环境变量:在所运行的脚本或shell中存在
用户环境变量:在当前登录的用户环境中存在
系统环境变量:在当前系统中存在,可以被任意用户、脚本或shell访问到
访问顺序
环境变量访问顺序:优先从局部环境变量开始,找不到的就到用户环境变量中,最后再到系统环境变量中访问。
局部环境变量→用户环境变量→系统环境变量
Windows环境变量
临时环境变量:
在Windows下,打开CMD(命令提示符),输入:
通过执行上述命令,我们发现 user 是一个变量,里面存放的值会被用户修改变化,但使用这个变量名 user,我们始终可以获取到里面的最新值。
SET 的环境变量仅在当前 CMD 窗口下有效,并且会随着 CMD 的关闭而释放;
如需永久保留环境变量,则需要在系统设置中配置并保存
全局环境变量
全局环境变量分为用户环境变量和系统环境变量
用户环境变量:仅在当前用户登录的环境下起作用,如切换成其他用户,那么其环境变量也随之发生变化
系统环境变量:不管是哪个用户登录在当前系统中,都共享使用的环境就变量
Linux环境变量
临时环境变量:
Shell 变量名在定义时,首个字符必须为字母(a-z,A-Z),不能以数字开头,中间不能有空格,可以使用下划线 _
,不能使用 -
,也不能使用标点符号等。
export 和 不使用 export 的主要区别在于变量的作用范围和可见性:
- 使用 export:通过使用 export 命令将变量导出为环境变量,这个变量不仅在当前 shell 进程中有效,而且在其子进程中也是可见的。这意味着,如果其他进程或脚本需要访问这个变量,它们可以通过环境变量的方式获取到这个变量的值。被导出的变量可以被其他进程或脚本访问,具有继承性,即被子进程继承。
- 不使用 export:这个变量就仅仅在当前shell进程中有效,不会被其他进程或脚本访问到。这样的变量只在当前的 shell 进程中有效,不具备继承性,即不会被子进程继承。
全局环境变量
与 Windows 下相同,Linux 下的全局环境变量也分为 用户环境变量 和 系统环境变量:
用户环境变量
在Linux系统中,用户环境变量的配置文件主要有两个,分别是 .bashrc
和 .bash_profile
(或 .profile
)。这些文件通常位于用户的主目录下,并且是隐藏文件,需要通过特定的命令来查看和编辑。
.bashrc
:这个文件用于配置与 Bash Shell 相关的环境变量和个性化设置,如命令别名、PATH 环境变量的设置、命令提示符的格式等。它会在每次启动新的非登录 Shell 时自动执行。.bash_profile
(或.profile
):这个文件用于配置登录 Shell 的环境变量,它会在用户登录时执行一次。如果系统中没有.bash_profile
文件,那么.profile
文件会被读取。
系统环境变量
在 Linux 系统中,系统环境变量的配置文件主要有以下几个:
-
/etc/environment
:这是一个全局配置文件,用于设置系统级别的环境变量。它会在系统启动时被读取,并且对所有用户生效。 -
/etc/profile
:这个文件用于设置全局的 shell 环境变量,它会在用户登录时被读取。它通常包含一些系统级别的环境变量设置,如 PATH、LANG 等。 -
/etc/profile.d/
目录下的脚本文件:这个目录下存放了一系列的 shell 脚本文件,每个文件都可以设置一些环境变量。这些脚本文件会在/etc/profile
被读取时自动执行。 -
/etc/bash.bashrc
:这个文件用于设置 Bash shell 的全局环境变量。它会在新的 Bash shell 启动时被读取。 -
/etc/sysconfig
目录下的配置文件:这个目录下有一些特定的配置文件,如sysconfig/network
、sysconfig/java
等,它们也可以设置一些环境变量。
source
source 命令在 Linux 系统中用于在当前 shell 会话中执行指定的脚本文件,从而使得脚本文件中的命令和变量设置立即生效。换句话说,source 命令可以让你在不重新启动 shell 的情况下,直接应用脚本文件中的更改。
因此,配置好全局环境变量后,还需要使用 source 命令来使该配置文件生效。
例如:source ~/.bashrc
shell
shell概念
Linux 作为一个操作系统,称为 kernel,一般用户不能直接使用 kernel,而通过 kernel 的外壳程序 Shell 和 kernel 进行沟通。
Shell 作为外壳程序,包裹在 Linux 内核外层,是一个应用程序,通过一系列的 Linux命令对操作系统 发出相关治疗提供人际界面。它连接了用户和 Linux 内核,让用户更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。bash 是 Shell 的一种。
shell执行过程:
常见的shell:
- Bourne Shell(/usr/bin/sh 或 /bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)