Linux踩坑心得:WSL 环境变量重启丢失
date
Jan 27, 2026
slug
wsl-bashrc-fix
status
Published
tags
Linux
summary
• 症状:环境变量和 PATH 重启就没了
• 原因:
.bash_profile 在捣乱,拦截了正常的加载流程
• 解决:rm ~/.bash_profiletype
Post

我猜你在使用WSL(Windows的Linux子系统)也遇到过这种抓狂的情况:
或者更气人的:
还有这种:
你照着网上的教程改
.bashrc,source 一下确实能用,但一关终端就又回到解放前。我也被这个问题折磨过,最后发现是个很蠢的原因。
真正的罪魁祸首
你可能试过把
export PATH=... 加到 .bashrc 里,也检查了 .profile,逻辑看起来都对,但重启终端后系统就是"失忆"。问题出在 WSL 的启动方式上。WSL 终端通常以 Login Shell 模式启动,Linux 加载配置文件有个很霸道的优先级:
- 先找
~/.bash_profile
- 找不到才去找
~/.profile
这里有个坑:如果你的目录下有
.bash_profile(可能是某个软件自动创建的,或者你以前不小心建的),Linux 就只读它,然后直接停止,完全不管后面的 .profile。Ubuntu 默认的
.profile 里有自动加载 .bashrc 的代码。所以一旦 .bash_profile 存在但没写好引导代码,你的 .bashrc 就彻底被忽略了。解决办法:直接删掉那个文件
最简单的方法不是去修补,而是直接删掉
.bash_profile,让系统回到默认状态。先检查一下有没有这个文件:
如果有,直接删掉:
重启终端,问题解决。
Ubuntu 自带的
.profile 已经写得很完善了,它会自动把 $HOME/.local/bin 加入 PATH,也会自动加载 .bashrc。删掉那个捣乱的文件后,一切都正常了。以后怎么配置环境变量
解决了加载问题,以后要添加环境变量就简单了,统一写在
~/.bashrc 里:重要:写在文件开头
把
export 语句写在 .bashrc 的最前面,避免文件中间的代码(比如 pnpm 或 conda 初始化)出错导致后面的配置没执行到。总结
- 症状:环境变量和 PATH 重启就没了
- 原因:
.bash_profile在捣乱,拦截了正常的加载流程
- 解决:
rm ~/.bash_profile
- 预防:重要的环境变量写在
.bashrc开头