一. 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 # 测试命令是否可用