本帖最后由 风精灵 于 2025-12-10 09:02 编辑

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

    本版积分规则

    Powered by Discuz! X3.5  © 2001-2013 Comsenz Inc.