跳至主要內容

Linux - 环境变量

Kamimika...大约 3 分钟LinuxLinux环境变量笔记

在 Linux 系统中,环境变量是用来设置记录系统运行时使用的一些配置的变量。

一、分类

大体分为以下两种:

  • 系统环境变量:系统级别的环境变量,在所有用户的环境中都有效。
    • 通常全部大写,如 PATH, HOME 等。
  • 局部环境变量:只对当前 shell 有效的环境变量,不会传递给子 shell 或子进程。

二、用途

  • 搜索可执行文件路径,如 PATH 变量。
  • 储存系统配置的默认值
  • 储存特定程序的配置
  • 存储时区、语言、用户名等信息
  • 配置 shell 的外观和行为,如 PS1 变量设置命令提示符。

三、处理环境变量

  • Linux 不会为系统维持或存储全局环境变量

  • 每个进程都有自己的环境变量,不同进程的环境变量不同,具体存储在 /proc/<pid>/environ 这> 一虚拟文件中。 (pid 为进程 ID)

  • 每个 shell 也是一个进程,它也有自己的环境变量

  • 每个进程都有一个启动它的父进程,子进程启动时,会从父进程继承环境变量。

3.1 不同 shell 的环境变量和启动脚本

对于不同的 shell,系统会加载不同的环境变量配置文件,导致环境不同。

  • Login Shell: 输入密码登录系统后运行的顶层 shell
    • /etc/profile
    • ~/.bash_profile~/.profile~/.bash_login
  • Non-Login Shell: 非登录时运行的 shell,例如通过 bash 开启的子 shell。
    • ~/.bashrc
    • /etc/bashrc/etc/bash.bashrc

/etc/profile 文件

/etc/profile 文件是系统级的环境变量配置文件,将会应用给所有用户,以及 Login ShellNon-Login Shell (继承获得)。

注意

通常需要 root 权限才能修改此文件,一般情况也都不建议直接修改此文件

如果需要修改系统环境变量,推荐在 /etc/profile.d 目录下创建 *.sh 文件(并添加执行权限),因为 /etc/profile 会自动加载这些文件。这样修改也拥有更高的可移植性。

3.2 修改环境变量

  1. 启动的程序添加环境变量
    env VAR=VALUE [command]VAR=VALUE [command]

  2. 添加局部环境变量不可继承
    VAR=VALUE

  3. 添加局部环境变量可继承
    export VAR=VALUE
    不可继承的环境变量变成可继承的环境变量: export VAR
    可继承的环境变量变成不可继承的环境变量: export -n VAR

  4. 删除环境变量: unset VAR

3.3 读取环境变量

  • echo $VARecho ${VAR}: 打印指定环境变量的值
  • printenv VAR: 打印指定环境变量的值
  • env/printenv: 显示当前所有环境变量

四、常用环境变量

PATH

PATH 变量用于指定 shell 查找可执行文件的路径(用 : 分隔不同的路径)

将路径添加在 PATH 后,可以直接通过文件名直接运行程序,而不需要指定路径。

PATH 尾部添加路径:export PATH=$PATH:/path/to/dir
PATH 头部添加路径:export PATH=/path/to/dir:$PATH

HOME

HOME 变量用于指定当前用户的主目录。

上次编辑于:
贡献者: wzh
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.4.1