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 容器与环境变量设置