Linux环境变量

1 理解环境变量

在所有 UNIX 、 类Unix系统和Windows系统中, 每个进程都有其特定的一组环境变量(Windows系统中的环境变量在命名、语法和用法上略有区别)

环境变量是进程运行的环境的一部分,子进程一般会继承其父进程的运行环境(除非手动的修改或删除),环境变量也是动态的,为进程提供了更多的灵活性

2 环境变量类型

临时性VS永久性

  • 通过export命令导入的环境变量是临时的,会立即生效但仅对当前终端有效
  • 通过修改配置文件导入的环境变量是永久的,但是需要通过命令source 文件名才能立即生效,否则只对新开终端生效

用户级VS系统级

  • 用户级环境变量仅对当前用户有效:比如通过export命令或修改配置文件~/.bashrc~/.profile~/.bash_profile~/.bash_login)导入的环境变量
  • 系统级环境变量将对所有用户生效:比如通过修改配置文件/etc/bashrc/etc/profile(部分系统为:/etc/bash_profile)、/etc/environment导入的环境变量

文件特点:

  • /.profile文件只在用户登录的时候读取一次
  • /.bashrc会在每次运行Shell脚本的时候读取一次

推荐阅读:Linux环境变量加载顺序分析

3 环境变量语法

多个环境变量值之间通过冒号分隔: `PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N>``

echo 显示某个环境变量值 echo $PATH export 设置一个新的环境变量 export HELLO="hello" (可以无引号) env 显示所有环境变量 set 显示本地定义的shell变量 unset 清除环境变量 unset HELLO readonly 设置只读环境变量 readonly HELLO

4 常见环境变量

  • PATH:可执行程序的搜索路径
  • HOME:指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
  • TEMP:进程用于存储临时文件的位置
  • HISTSIZE:保存历史命令记录的条数
  • LOGNAME:当前用户的登录名。
  • HOSTNAME:主机的名称
  • SHELL:指当前用户用的是哪种Shell
  • LANG/LANGUGE:和语言相关的环境变量
  • MAIL:指当前用户的邮件存放目录
  • C_INCLUDE_PATH:头文件的搜索路径
  • LIBRARY_PATH:静态库搜索路径(编译时包含)
  • LD_LIBRARY_PATH:动态库搜索路径(链接时包含)

5 其他特殊情况

通过ssh连接远程容器时,可能出现环境变量重置的问题,具体分析与解决如下: 7 容器与环境变量设置

6 参考

Linux环境变量配置全攻略 Linux环境变量总结 wiki-环境变量

往年同期文章