环境变量

一、什么是环境变量?

环境变量是操作系统中存储系统环境和用户配置的命名值对,它们影响程序和系统的行为

# 格式:变量名=值
USER=root
HOME=/home/username

常见系统环境变量速查表

变量名含义典型值说明
PATH命令搜索路径/usr/bin:/bin:/usr/local/bin最重要,系统查找命令的目录列表
PWD当前工作目录/home/user/projectcd 时自动更新
OLDPWD上一个工作目录/home/usercd - 回到的目录
HOME用户家目录/home/username/rootcd ~ 的路径
USER当前用户名root, tom登录用户名
UID用户ID0(root), 1000(普通用户)数字形式的用户ID
SHELL默认Shell/bin/bash当前使用的Shell
BASHBash路径/bin/bashBash解释器位置
LANG系统语言zh_CN.UTF-8, en_US.UTF-8语言和编码设置
HOSTNAME主机名localhost, server1系统主机名称
PPID父进程ID1234创建当前进程的父进程号
PS1主提示符[\u@\h \W]\$命令行提示符格式
PS2次提示符>续行提示符

PS1提示符特殊符号详解

符号含义示例效果
\u当前用户名roottom
\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的初始化环境变量文件顺序:

按需设置

记住这几点

  1. export – 设置环境变量 ()
  2. echo $变量 – 查看变量
  3. PATH最重要 – 系统靠它找命令
  4. 环境变量会传给子进程,普通变量不会
  5. 永久设置要写入 ~/.bashrc

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注