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.优先级以及加载顺序
登录 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文件的所在位置:位于用户的主目录下,完整路径为:
~/.bashrc # 对于普通用户来说,其位置是: /home/用户名/.bashrc # 对于超级管理员root用户来说,其路径是: /root/.bashrc如:
rain@LAPTOP-IIB6PKR5:/$ pwd / rain@LAPTOP-IIB6PKR5:/$ ls /home/rain/.bashrc /home/rain/.bashrc[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.常见配置示例
# 别名 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时的情况
[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 functions1. $的作用:取变量的值
echo $PATH # 输出 PATH 变量的内容 echo $HADOOP_HOME # 输出 /opt/hadoop-3.1.42. 那为什么要这么写呢?
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)
/usr/local/bin:/usr/bin:/bin执行后变成:
/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而不写全路径:
# 方式一:用变量(推荐) 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
执行顺序很重要!
export HADOOP_HOME=/opt/hadoop-3.1.4 # 必须先定义 export PATH=$PATH:$HADOOP_HOME/bin:... # 才能在这里引用如果顺序颠倒,$HADOOP_HOME为空,就会拼接出错误的路径。
3.验证环境变量添加成功的方法
echo $PATH # 查看完整路径 which hadoop # 验证系统能否找到 hadoop 命令 hadoop version # 测试命令是否可用