Linux 环境变量

杨镇源 于 2024-03-22 发布 浏览量

Linux 环境变量

一、环境变量简介

  1. 什么是环境变量 一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好地运行进程。
  2. 个人理解 操作系统和用户程序在运行的时候,需要一些参数,而这些参数通过可以通过变量进行引用。改变环境变量的值,可以改变系统和软件的运行的倚靠或依赖。例如:linux系统下的LANG环境变量确定软件程序与用户通信的语言。

    环境变量的含义及其值的格式由使用它的应用程序确定。有许多众所周知的环境变量,其含义和格式已经达成一致,并且它们被许多应用程序使用。(EnvironmentVariables

  3. 环境变量的构成 环境变量由分配了值的名称组成。例如,在常用的计算机系统中,LANG的默认值一般是en_US.UTF-8

二、Linux 下操作环境变量

  1. 更改现有环境变量的值:
     LANG=zh_CN.UTF-8
    
  2. 设置新的环境变量:
     export EDITOR=gedit
    
  3. 查看系统所有环境变量:
     printenv
    
  4. 查看单个环境变量:
     printenv USER
     OR
     echo $USER
    
  5. env命令用于对环境变量进行临时短期的更改,还可以用户显示当前环境的环境变量:
     env
    
  6. 删除环境变量:
    • 给变量赋值空值:
       export EDITOR=
      

      在大部分情况下,给环境变量赋值空值,即可是环境变量失效。但是一些环境变量设置为空值,也会影响行为,所以不推荐使用此方法删除环境变量。

    • 使用unset命令:
       unset EDITOR
      
    • 使用export -n命令:
       export -n EDITOR
      

      使用export -n命令是将环境变量变为普通的shell变量,但是变量的值还存在。

三、环境变量的工作原理

环境变量在不同使用场景中的有效范围不同。

1. 局部性

环境变量的值是本地的,它们特定于设置它们的位置或为其设置的运行过程。假如同时打开两个终端窗口(这意味着有两个单独的Shell进程正在运行),在其中一个窗口中更改变量的值,另外一个窗口中的Shell将看不到该更改。

2. 继承

父进程创建子进程时,子进程会继承父进程的所有环境变量和父进程的值。

例如从终端运行gedit命令,此时Shell(父进程)创建gedit (子进程)。 假如我们在终端中为 LANG环境变量设置了一个新值,然后从同一个终端运行gedit,该gedit进程会继承LANG的新值,但是其他终端下的子进程则不会继承,所以会出现环境变量的不同。

由于环境变量的局部性特征,一旦我们运行了子进程,对父进程环境变量的更改不会再影响到已运行的子进程,反之亦然。

四、Linux 下设置环境变量

在不同的场景中设置的环境变量,其有效范围不同。

  1. 在当前shell会话中export
     export VARIABLE_NAME=value
    

    这个设置只在当前Shell会话中有效,当会话结束时会失效。

  2. 在脚本中export: 可以使用export命令在脚本中设置并导出环境变量,使其在当前脚本以及后续子进程中可见。这样可以确保其他脚本或命令能够使用这些导出的环境变量。 例如,在一个Shell脚本中,可以这样使用export命令设置环境变量:
     #!/bin/bash
     # 设置并导出环境变量
     export VARIABLE_NAME=value
     # 其他脚本或命令可以访问导出的环境变量
     other_script.sh
    

    在这个示例中,export VARIABLE_NAME=value语句将设置一个名为VARIABLE_NAME的环境变量,并将其导出,以便在脚本中和之后的其他脚本中都能够访问到。 需要注意的是,导出的环境变量仅在子进程中有效,不会影响到父进程或其他已经存在的Shell会话。如果希望将环境变量导出到当前Shell会话中,可以直接运行脚本而不是使用子进程执行,如通过source命令或.运算符:

     source script.sh
     OR
     . script.sh
    

    这样,脚本中设置并导出的环境变量将在当前shell会话中立即生效。

  3. 用户级永久export环境变量 将环境变量添加到用户的个人配置文件中,例如~/.bashrc~/.bash_profile,具体的操作如下:
    • 打开用户的个人配置文件
       nvim ~/.bashrc
      
    • 在文件中添加环境变量的设置
       export VARIABLE_NAME=value
      
    • 保存文件并退出,然后重启shell会话或运行”source ~/.bashrc”使其生效
  4. 系统级永久export环境变量 可以将环境变量添加到系统级配置文件中,例如/etc/profile或/etc/environment,具体的操作如下:
    • 打开系统级配置文件
       sudo nvim /etc/profile
      
    • 在文件中添加环境变量的设置
       export VARIABLE_NAME=value
      
    • 保存文件并退出,然后重新登录或使用”source /etc/profile”使其生效

五、Ubuntu 系统中常见的环境变量

与文件位置相关的环境变量 区域设置变量 Preferred application variables Program execution variables 编译和软件开发相关的变量 其他环境变量 其他环境变量