哈喽大家好,今天继续分享Linux的相关内容——环境变量,这部分内容比较抽象,我也是结合了deepseek的解释才搞明白环境变量的具体含义。这块内容主要需要掌握的是如何管理PATH(虽然我也没有完全掌握具体的用法
),让我们一起来学习一下吧!
环境变量:用于储存有关shell会话和工作环境的系统变量。
这个定义太太太抽象,我们把它通俗地解释一下:环境变量就相当于是你的个人备忘录或手机快捷指令。
想象一下你每天工作的书桌。为了让工作更高效,你会在墙上贴一些 便利贴(环境变量),上面写着关键信息:
一张纸条写着:我的项目文件放在:/home/我/重要项目 (这就像变量 PROJECT_HOME)
一张纸条写着:命令搜索路径:1号抽屉、2号书架、3号文件夹... (这就是最重要的变量 PATH)
环境变量就是操作系统(Linux)和你运行的程序(软件)用来记录和查找各种关键信息的“便利贴集合”。
你告诉系统去完成“画图”这个任务,它不用翻遍整个房子,它直接去看PATH(最重要的一种环境变量)那张“便利贴”,按上面写的路径顺序(1号抽屉、2号书架...)去找画图这个工具。找到了就立刻运行。
个性化:你的“便利贴”可以写“编辑器=vs_code”,而别人的可以写“编辑器=vim”。同一个编辑文件命令,你们会打开不同的软件。
共享配置:一个软件(比如JAVA程序)启动时,会先去看JAVA_HOME这张便利贴,知道应该去哪里找运行所需的Java核心文件。
一串用冒号 : 隔开的路径列表。
假设你在终端输入一个命令ascp并回车时,系统会严格按照这个列表的顺序,去这些文件夹里寻找名叫ascp的可执行文件。
先查 /usr/local/bin 里有没有 ascp?没有。
再查 /usr/bin 里有没有?没有。
再查 /home/.../rna/bin 里有没有?找到了! 于是运行它。
如果找不到:系统搜遍了PATH列表里所有的文件夹都没找到 ascp,就会对你报错:command not found。
echo$PATH | tr ':''/n'##将路径输出为一行一个
which ls ##查找命令ls在哪个路径
推荐方法:在自己家目录下创建一个 ~/bin/ 文件夹并将其添加到环境变 量,后续手动安装的软件就可以将软件的可执行文件拷贝或软链接(绝 对路径)到这个 bin 文件夹:
mkdir ~/bin
echo'export "PATH=~/bin:$PATH" ' >> ~/.bashrc
source ~/.bashrc
理解这段代码
想象你的家(家目录 ~)旁边有一个小工具房(~/bin):
大街上(系统目录):/usr/bin,/usr/local/bin 是公共工具房,所有人都能用;
你的工具房(~/bin):你自己搭建的,只有你能用,想放什么就放什么。
1. 创建个人工具房
mkdir ~/bin
在家目录(~)下创建一个名为 bin 的文件夹
这个文件夹专门存放你个人的可执行文件(工具/软件)
位置示例:/home/你的用户名/bin/
2. 告诉系统:"先去我的工具房找工具!"
echo'export "PATH=~/bin:$PATH"' >> ~/.bashrc
a) export - 发布通知
向整个系统宣布:"请注意,我的 PATH 要这样设置!"
b) "PATH=~/bin:$PATH" - 设置搜索顺序
~/bin:首先搜索我的个人工具房
::分隔符(像分号)
$PATH:然后是原来的搜索路径
修改后的系统找工具顺序:先到 ~/bin(你的工具房)找;找不到再到 /usr/local/bin 找;再到 /usr/bin 找。
c) >> ~/.bashrc - 永久记录
“>>”:追加到文件末尾(不覆盖原有内容)
~/.bashrc:你的个人配置文件
效果:每次打开终端,自动执行这个设置
3. 立即生效
source ~/.bashrc
1. 个人软件管理
场景:你下载了一个小工具 my_tool,它不在系统目录
# 以前的做法(麻烦):
/home/你/下载/my_tool # 每次都要输入完整路径
# 现在的做法(方便):
cp /home/你/下载/my_tool ~/bin/
my_tool # 直接运行!
2. 覆盖系统命令
场景:系统有 Python 3.6,你需要 Python 3.9
# 在你的 ~/bin 里放一个指向新 Python 的链接
ln -s /opt/python3.9/bin/python3 ~/bin/python
# 现在输入 python 会先用你的版本
python --version # 输出:Python 3.9.x
# 系统原来的 python 3.6 还在,但优先级低
3. 避免污染系统目录
不需要 sudo 权限!
系统目录(如 /usr/local/bin)需要管理员权限;你的 ~/bin 你想放什么就放什么。
4. 隔离和整洁
所有个人工具都在一个地方,重装系统时,备份 ~/bin 就行,删除软件时,直接从 ~/bin 移除。
# 1. 创建一个脚本
cat > ~/bin/hello.sh << 'EOF'
#!/bin/bash
echo"Hello, 世界!"
EOF
# 2. 给执行权限
chmod +x ~/bin/hello.sh
# 3. 直接运行(因为 ~/bin 在 PATH 中)
hello.sh
# 输出:Hello, 世界!
# 假设你下载了 myapp,解压后在这里:
# /home/你/下载/myapp-1.0/bin/myapp
# 创建软链接到 ~/bin
ln -s /home/你/下载/myapp-1.0/bin/myapp ~/bin/
# 现在可以直接运行
myapp
# 你有两个 Java 版本
# Java 8: /opt/java8/bin/java
# Java 11: /opt/java11/bin/java
# 创建软链接,快速切换
ln -s /opt/java11/bin/java ~/bin/java # 当前用 Java 11
# 想切换时
rm ~/bin/java
ln -s /opt/java8/bin/java ~/bin/java # 切换到 Java 8
PS1:命令行配色。
HOME:当前用户的主目录。
LOGNAME:当前用户的登录名。
补充:
~/.bashrc:系统配置文件,包含专用于你的 bash shell 的bash信息、设 置,每次登录或打开新的 shell 时,该文件会被自动读取和执行。如果正 确修改了~/.bashrc,需要source。
echo $环境变量名

今天的分享就到这里啦,我们下期见。
★生信技能树课程