Linux 环境变量教程:PATH 配置一次搞懂
摘要
"command not found" 十有八九是 PATH 问题。本教程依据 GNU Bash 官方手册整理,介绍环境变量的概念、export 导出、PATH 搜索顺序、~/.bashrc 与 /etc/profile 等配置文件的区别,并以 Go 环境配置为实战案例,附 which/type -a 排查方法。
Linux 环境变量教程:PATH 配置一次搞懂
"命令明明装好了,为什么提示 command not found?"——十有八九是 PATH 没配对。环境变量是 Linux/macOS Shell 的基础知识,也是配置开发环境(Java、Go、Node、Python 虚拟环境)的必修课。本教程依据 GNU Bash 官方手册整理。
一、什么是环境变量
环境变量是 Shell 和程序都能读到的一组键值对。查看它们:
PATH 是重中之重:当你输入 python 时,Shell 会按 PATH 里的目录从前往后依次找名为 python 的可执行文件,找到第一个就执行。所以"命令找不到"或"执行的版本不对",根源都在 PATH 的顺序上。
二、临时设置与导出
往 PATH 追加一个目录(注意冒号分隔):
这些设置只在当前终端会话有效,关掉窗口就没了。要永久生效,需要写进配置文件。
三、配置文件:写进哪里
Bash 启动时按类型读取不同文件:
文件 | 生效范围 | 说明 |
|---|---|---|
| 当前用户的交互式 Shell | 个人环境变量首选 |
| 登录 Shell | 常用于 PATH 初始化 |
| 所有用户 | 系统级设置,需 root |
日常给某个工具加 PATH,写 ~/.bashrc 就够了:
macOS 用 zsh 的用户对应文件是 ~/.zshrc。
四、实战:配置一个开发工具
以把 Go 安装在自定义目录为例:
source ~/.bashrc 后执行 go version 验证。判断一个命令到底执行的是哪个文件,用:
五、单次生效与持久化的区别
VAR=值 命令:只对这一条命令生效,如NODE_ENV=production node app.jsexport+ 终端:当前会话有效写入
~/.bashrc:该用户所有新终端有效写入
/etc/environment:所有用户、系统服务有效
六、总结
需求 | 做法 |
|---|---|
查看所有变量 |
|
让子进程读到变量 |
|
追加 PATH |
|
永久生效 | 写 |
查命令实际路径 |
|
理解了 PATH 的搜索机制,"command not found" 和"版本不对"这类问题就都能自己排查了。
