本帖最后由 风精灵 于 2025-12-10 09:02 编辑
环境变量一般是指用export内置命令导出的变量,用于定义Shell的运行环境,保证Shell命令的正确执行。Shell通过环境变量来确定登录用户名、命令路径、终端类型、登录目录等,所有的环境变量都是系统全局变量,可用于所有子进程中,这包括编辑器、Shell脚本和各类应用。 如果想要设置环境变量,就要在给变量赋值之后或在设置变量时使用export命令。环境变量可以在命令行中设置和创建,但用户退出命令行时这些变量值就会丢失,因此,如果希望永久保存环境变量,可在以下位置配置: 1.用户家目录下的.bash_profile或.bashrc(非用户登录模式特有,例如远程SSH)文件中。 2.全局配置/etc/bashrc(非用户登录模式特有,例如远程SSH)或/etc/profile文件中定义。 在将环境变量放入上述的文件中后,每次用户登录时这些变量都将被初始化。按照系统规范,所有环境变量的名字均采用大写形式。在将环境变量应用于用户进程程序之前,都应该用export命令导出定义。 有一些环境变量,比如HOME、PATH、SHELL、UID、USER等,在用户登录之前就已经被/bin/login程序设置好了。通常环境变量被定义并保存在用户家目录下的.bash_profile文件或全局的配置文件/etc/profile中。 查看环境变量可以使用env命令: elf@ubuntu:~$ env env命令只能显示全局变量,此外set命令也可以查看环境变量: elf@ubuntu:~$ set set命令可以输出所有的变量,包括全局变量和局部变量。 了解环境变量基本概念之后,下面可以通过子进程Shell与变量的可见性实例更深一步理解环境变量。 在当前终端通过ps命令可以看到目前运行的进程信息。 elf@ubuntu:~$ ps -f 可以看到当前只有一个bash进程,这个bash进程就是当前使用的Shell进程。通过bash命令可以基于当前的Shell进程再开启一个新的bash Shell进行,即子Shell进程。elf@ubuntu:~$ bash 可以看到新增加的bash进程(子进程)的PPID是原来bash进程(父进程)的PID,通过exit命令可以退出子进程。 elf@ubuntu:~$ exit 尝试在当前的bash进程中定义变量,之后在子进程输出,查看现象。 可以看到子进程中无法输出父进程中定义的变量,而这个问题就可以通过export命令解决。 可以看到设置了环境变量后,子进程就可以使用父进程的变量,同样变量也可以在Shell脚本、编辑器和各类应用中使用。
|