。
一、什么是环境变量?
环境变量是操作系统中存储系统环境和用户配置的命名值对,它们影响程序和系统的行为
# 格式:变量名=值
USER=root
HOME=/home/username
常见系统环境变量速查表
| 变量名 | 含义 | 典型值 | 说明 |
|---|---|---|---|
| PATH | 命令搜索路径 | /usr/bin:/bin:/usr/local/bin | 最重要,系统查找命令的目录列表 |
| PWD | 当前工作目录 | /home/user/project | cd 时自动更新 |
| OLDPWD | 上一个工作目录 | /home/user | cd - 回到的目录 |
| HOME | 用户家目录 | /home/username 或 /root | cd ~ 的路径 |
| USER | 当前用户名 | root, tom | 登录用户名 |
| UID | 用户ID | 0(root), 1000(普通用户) | 数字形式的用户ID |
| SHELL | 默认Shell | /bin/bash | 当前使用的Shell |
| BASH | Bash路径 | /bin/bash | Bash解释器位置 |
| LANG | 系统语言 | zh_CN.UTF-8, en_US.UTF-8 | 语言和编码设置 |
| HOSTNAME | 主机名 | localhost, server1 | 系统主机名称 |
| PPID | 父进程ID | 1234 | 创建当前进程的父进程号 |
| PS1 | 主提示符 | [\u@\h \W]\$ | 命令行提示符格式 |
| PS2 | 次提示符 | > | 续行提示符 |
PS1提示符特殊符号详解
| 符号 | 含义 | 示例效果 |
|---|---|---|
| \u | 当前用户名 | root 或 tom |
| \h | 主机名(短格式) | localhost |
| \H | 完整主机名 | localhost.localdomain |
| \w | 完整当前目录 | /home/user/project |
| \W | 当前目录名(短) | project |
| \$ | 用户类型提示 | # (root) 或 $ (普通用户) |
| \d | 日期 | Fri Feb 20 |
| \t | 时间(24小时) | 14:30:25 |
| \T | 时间(12小时) | 02:30:25 |
| \@ | 带am/pm的时间 | 02:30 PM |
| \n | 换行 | 换到下一行 |
| *\* | 反斜杠本身 | \ |
| ! | 历史命令编号 | 1001 |
| # | 当前命令编号 | 10 |
PS1配置示例
# 默认的PS1
[\u@\h \W]\$
# 效果: [root@localhost ~]#
# 显示完整路径
export PS1='[\u@\h \w]\$ '
# 效果: [root@localhost /home/user/project]#
# 显示时间+用户名+路径
export PS1='[\t \u@\h \W]\$ '
# 效果: [14:30:25 root@localhost project]#
# 多行提示符
export PS1='[\u@\h \W]\n\$ '
# 效果: [root@localhost project]
# $
# 带颜色的提示符
export PS1='\[\e[32m\]\u@\h\[\e[00m\]:\[\e[34m\]\W\[\e[00m\]\$ '
其他环境变量用途
| 变量 | 快速用途 |
|---|---|
| PATH | 添加自定义命令路径:export PATH=$PATH:/my/bin |
| HOME | 脚本中获取用户家目录:cd $HOME |
| PWD | 获取当前目录:echo $PWD |
| OLDPWD | 返回上一个目录:cd $OLDPWD |
| USER | 判断当前用户:if [ "$USER" = "root" ]; then |
| UID | 权限检查:if [ $UID -eq 0 ]; then |
| LANG | 临时切换语言:LANG=en_US.UTF-8 command |
| PS1 | 自定义提示符:export PS1='[\u@\h \W]\$ ' |
最常用的几个
# 日常最常用的环境变量
echo $PATH # 看命令在哪
echo $HOME # 回家
echo $PWD # 看当前在哪
echo $USER # 看我是谁
echo $SHELL # 看用的什么Shell
echo $LANG # 看系统语言
二、基础操作命令
# 1. 查看所有环境变量
env
printenv
# 2. 查看特定变量
echo $PATH
printenv HOME
# 3. 设置临时变量(当前会话有效)
export MY_NAME="Tom"
export JAVA_HOME=/usr/lib/jvm/java-11
# 4. 删除变量
unset MY_NAME
# 5. 永久设置(写入配置文件)
echo 'export JAVA_HOME=/usr/lib/jvm/java-11' >> ~/.bashrc
source ~/.bashrc # 生效
三、PATH变量详解
# 查看当前PATH
echo $PATH
# 输出:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
# 添加新路径
export PATH=$PATH:/自定义/路径
export PATH=/自定义/路径:$PATH # 优先查找
# 示例:添加当前目录到PATH
export PATH=$PATH:.
四、实战场景
# 场景1:配置Java环境
export JAVA_HOME=/usr/lib/jvm/java-11
export PATH=$JAVA_HOME/bin:$PATH
# 场景2:设置代理
export HTTP_PROXY=http://192.168.1.1:8080
# 场景3:临时调试
DEBUG=true python app.py # 只对这条命令生效
# 场景4:查看程序依赖的环境
cat /proc/$$/environ | tr '\0' '\n' # 当前Shell的环境
$HOME/.bash_profile是最重要的配置文件,当某Linux用户登录时,Shell会首先执行系统默认的配置文件/etc/profile,然后会自动执行.bash_profile文件,如果.bash_profile文件不存在,接着读取~/.bashrc文件。
如下是一个示例
[gridsphere@jselab ~]# cat .bash_profile #gridsphere用户的.bash_profile文件
.bash_profile
Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
User specific environment and startup programs
export JAVA_HOME=/usr/local/jdk1.5.0_04
export CATALINA_HOME=/home/gridsphere/jakarta-tomcat-5.0.28
export GLOBUS_LOCATION=/usr/local/globus-4.0.4
export CLASSPATH=/usr/local/jdk1.5.0.04/lib
export ANT_HOME=/usr/local/apache-ant-1.7.0
export PATH=$PATH:$JAVA_HOME/bin: $ANT_HOME/bin: $HOME/bin
如果要使新加入的行立即生效,需要利用source命令执行.bash_profile文件。source命令也称为“点命令”,即句点符号“.”和source命令是等价的,source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录
. .bash_profile #注意:句点符号后面用空格与文件名相分隔
source bash_profile
Bash的初始化环境变量文件顺序:
按需设置

记住这几点
export– 设置环境变量 ()echo $变量– 查看变量PATH最重要 – 系统靠它找命令- 环境变量会传给子进程,普通变量不会
- 永久设置要写入
~/.bashrc
发表回复