Linux中如何添加环境变量

一. Linux中配置环境变量的的方式

1.按作用范围分类

1.仅对当前用户生效

文件/方式 触发时机 说明
~/.bashrc 打开新交互式终端 最常用,下面会介绍
~/.bash_profile 用户登录时(登录 shell) SSH 登录、图形界面登录
~/.profile 用户登录时 通用,兼容 sh 和其他 shell
~/.bash_login 用户登录时 Bash 专用,优先级低于 .bash_profile
~/.bash_logout 用户退出登录时 用于清理操作

注:通常 .bash_profile 中会调用 .bashrc,确保两者都生效

2.对所有用户都生效(系统级)

文件 说明
/etc/profile 所有用户登录时加载
/etc/bash.bashrc 所有用户的 Bash 交互式 shell(Debian/Ubuntu 等)
/etc/profile.d/ 存放自定义脚本,会被 /etc/profile 自动调用
/etc/environment 系统级环境变量,格式严格(无 $ 引用,纯 KEY=VALUE

3.临时生效(当前会话)

命令 说明
export VAR=value 当前终端会话生效,关闭后失效
VAR=value command 仅对单次命令生效
source ~/.bashrc 重新加载配置文件,立即生效

2.使用场景建议

场景 推荐方式
个人日常配置 ~/.bashrc
登录自动执行(如启动代理) ~/.bash_profile~/.profile
系统全局配置 /etc/profile.d/ 下新建脚本
临时测试 export 命令
图形应用需要的环境变量 ~/.profile/etc/environment

3.优先级以及加载顺序

bash 复制代码
登录 shell:
  /etc/profile → ~/.bash_profile(或 ~/.profile)→ ~/.bashrc

交互式非登录 shell:
  /etc/bash.bashrc → ~/.bashrc

不同发行版(Ubuntu、CentOS、Arch 等)的具体路径和调用关系可能略有差异。

特性 登录 shell 交互式非登录 shell
触发时机 用户登录系统时 已登录后打开新终端
典型场景 SSH 远程登录、TTY 控制台登录、图形界面登录 打开终端窗口、执行 bash 命令
加载文件 /etc/profile~/.bash_profile/~/.profile /etc/bash.bashrc~/.bashrc
用途 初始化用户会话环境 提供交互式命令行体验

二. .bashrc文件

1.文件位置

.bashrc文件是一个隐藏的文件,英文全称是:Bash Run Commands,意为"Bash运行命令"

.bashrc文件的所在位置:位于用户的主目录下,完整路径为:

bash 复制代码
~/.bashrc


# 对于普通用户来说,其位置是:
/home/用户名/.bashrc

# 对于超级管理员root用户来说,其路径是:
/root/.bashrc

如:

bash 复制代码
rain@LAPTOP-IIB6PKR5:/$ pwd
/
rain@LAPTOP-IIB6PKR5:/$ ls /home/rain/.bashrc
/home/rain/.bashrc
bash 复制代码
[root@master /]# pwd
/
[root@master /]# ls /root/.bashrc
/root/.bashrc

补充说明

  • 这是一个隐藏文件 (以点 . 开头),默认用 ls 看不到,需用 ls -a 查看

  • 每个用户都有自己的独立 .bashrc,互不影响

  • 系统级模板通常位于 /etc/skel/.bashrc,新建用户时会自动复制到其主目录

.bashrc 是 Linux/Unix 系统中 Bash shell 的配置文件,主要作用如下:

2.核心功能

1. 个性化配置

  • 设置命令别名(alias),如 alias ll='ls -alF'

  • 自定义命令提示符(PS1 变量)

  • 配置环境变量(PATH、EDITOR 等)

2. 启动时自动执行

  • 每次打开新的交互式非登录 shell时自动加载

  • 例如:打开终端窗口、在图形界面中启动终端、执行 bash 命令时

3. 功能增强

  • 加载自定义函数和脚本

  • 配置命令行自动补全、历史记录

  • 设置终端颜色、字体等显示效果

3.常见配置示例

bash 复制代码
# 别名
alias ..='cd ..'
alias grep='grep --color=auto'

# 环境变量
export PATH="$HOME/.local/bin:$PATH"
export EDITOR=vim

# 提示符样式
PS1='\u@\h:\w\$ '

# 启动时执行
neofetch  # 显示系统信息

4.注意事项

  • 修改后需执行 source ~/.bashrc 或重启终端生效

  • 通常会在 .bash_profile 中调用 .bashrc,确保登录时也能加载

  • 系统级配置在 /etc/bash.bashrc(各发行版路径可能不同)

三.学习Hadoop时的情况

bash 复制代码
[root@master ~]# find / -name ".bashrc" # 使用find命令从根目录按文件名字模式查找名字为".bashrc"的文件
/etc/skel/.bashrc
/root/.bashrc
[root@master ~]# cat /root/.bashrc
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi

# 配置HADOOP_HOME环境变量,作用是让你可以在任意目录下都可以方便地使用Hadoop命令,让相关脚本知道Hadoop安装在哪
# 比如,想要启动HDFS,如果没有配置HADOOP_HOME环境变量,那就要输入/opt/hadoop-3.1.4/sbin/start-dfs.sh
# 但是配置好了环境变量,$HADOOP_HOME/sbin/start-dfs.sh,就可以这样启动HDFS了
# 保存并退出后,使用source ~/.bashrc命令来让下面两行配置生效。然后就可以使用echo $HADOOP_HOME或hadooop versin来验证配置是否成功了
export HADOOP_HOME=/opt/hadoop-3.1.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
[root@master ~]# cat /etc/skel/.bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi

# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions

1. $的作用:取变量的值

bash 复制代码
echo $PATH        # 输出 PATH 变量的内容
echo $HADOOP_HOME # 输出 /opt/hadoop-3.1.4

2. 那为什么要这么写呢?

bash 复制代码
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

拆解理解:

部分 含义
PATH= 给 PATH 变量赋值
$PATH 保留原有的所有路径 (如 /usr/local/bin:/usr/bin:/bin
: 路径分隔符(Linux 用冒号分隔多个路径)
$HADOOP_HOME/bin Hadoop 的命令目录(如 hadoop, hdfs
$HADOOP_HOME/sbin Hadoop 的管理脚本目录(如 start-dfs.sh

假设原来PATH变量值是(即$PATH)

bash 复制代码
/usr/local/bin:/usr/bin:/bin

执行后变成:

bash 复制代码
/usr/local/bin:/usr/bin:/bin:/opt/hadoop-3.1.4/bin:/opt/hadoop-3.1.4/sbin

为什么不能直接写死:

错误写法 问题
export PATH=/opt/hadoop-3.1.4/bin 覆盖 了原有 PATH,系统基本命令(如 ls, cat)都找不到
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin 丢失了原有路径,同样导致系统命令失效

为什么用$HADOOP_HOME而不写全路径:

bash 复制代码
# 方式一:用变量(推荐)
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

# 方式二:写死路径(不推荐)
export PATH=$PATH:/opt/hadoop-3.1.4/bin:/opt/hadoop-3.1.4/sbin

用变量的好处

  • 易维护 :Hadoop 升级或换目录时,只需改 HADOOP_HOME 一处

  • 可读性:一看就知道是 Hadoop 相关的路径

  • 其他配置复用 :如 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

执行顺序很重要!

bash 复制代码
export HADOOP_HOME=/opt/hadoop-3.1.4      # 必须先定义
export PATH=$PATH:$HADOOP_HOME/bin:...     # 才能在这里引用

如果顺序颠倒,$HADOOP_HOME 为空,就会拼接出错误的路径。

3.验证环境变量添加成功的方法

bash 复制代码
echo $PATH          # 查看完整路径
which hadoop        # 验证系统能否找到 hadoop 命令
hadoop version      # 测试命令是否可用
相关推荐
AC赳赳老秦2 小时前
政企内网落地:OpenClaw 离线环境深度适配方案,无外网场景下本地化模型对接与全功能使用
java·大数据·运维·python·自动化·deepseek·openclaw
l1t2 小时前
mingw和Linux中的gcc和llvm编译器编译的pocketpy执行同一个python脚本的不同效果
linux·运维·python
ITyunwei09872 小时前
团队管理与人才发展:如何打造一支“召之即来,来之能战”的铁军?
大数据·运维·人工智能
白緢3 小时前
一、Linux 基础入门
linux·运维·服务器
Deepoch3 小时前
面向工业现场自主运维:Deepoc 具身模型开发板的端侧智能升级路径
运维·人工智能·科技·巡检机器人·deepoc
菜菜艾3 小时前
自动化环境补丁更新系统
linux·运维·bash·运维开发
江上清风山间明月3 小时前
Nginx基于域名区分的多网站部署
运维·nginx·部署·php·多个网站
随风,奔跑3 小时前
Nginx
服务器·后端·nginx·web
HalvmånEver3 小时前
MySQL的索引
android·linux·数据库·学习·mysql