Linux 环境变量入门:PATH 是怎么找到你的命令的

举报
yd_258677104 发表于 2026/11/11 06:15:49 2026/11/11
【摘要】 在终端里敲 python3 就能运行 Python,敲 ls 就能列出文件——系统是怎么知道这些程序在哪的?答案是环境变量,其中最常用的就是 PATH。理解它,能帮你少踩很多“命令找不到”的坑。 PATH:系统找命令的地址簿PATH 是一个用冒号隔开的目录列表。输入命令后,Shell 会按顺序去这些目录里找同名的可执行文件,找到第一个就运行:echo $PATH典型输出像 /usr/loca...

在终端里敲 python3 就能运行 Python,敲 ls 就能列出文件——系统是怎么知道这些程序在哪的?答案是环境变量,其中最常用的就是 PATH。理解它,能帮你少踩很多“命令找不到”的坑。

PATH:系统找命令的地址簿

PATH 是一个用冒号隔开的目录列表。输入命令后,Shell 会按顺序去这些目录里找同名的可执行文件,找到第一个就运行:

echo $PATH

典型输出像 /usr/local/bin:/usr/bin:/bin。想知道某个命令到底用的是哪个路径,用 which:

which python3

如果两个目录里有同名命令,排在前面的胜出。这就是为什么自己装的软件有时“装了却找不到”——它的目录不在 PATH 里。

临时改与永久改

只在当前终端里生效的改法,用 export:

export PATH=$HOME/mytools/bin:$PATH

把自己的目录加到最前面,$PATH 保留原来的内容,别直接覆盖,否则系统命令都找不到了。关掉终端,这个改动就消失,适合临时测试。

想让改动每次打开终端都生效,就写进 Shell 的启动文件。Bash 用户一般写 ~/.bashrc,Zsh 用户写 ~/.zshrc:

echo 'export PATH=$HOME/mytools/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

改完用 source 立即加载,或重开一个终端验证。改启动文件前先备份,是个不容易吃亏的习惯。

其他常用环境变量

除了 PATH,还有几个经常见到:

  • HOME:当前用户的家目录,cd ~ 去的就是这里。
  • USER:当前登录的用户名。
  • LANG:语言与编码设置,中文乱码时常要看它是不是 zh_CN.UTF-8。
  • EDITOR:默认编辑器,crontab -e 这类命令会调用它。

查看某个变量用 echo $变量名,列出全部变量用 env。临时给一条命令设变量,不用 export,直接写在命令前面:

LANG=C sort file.txt

排错小结

遇到 command not found,先问三个问题:程序真的装了吗(which 查不到就是没装或不在 PATH 里);目录在 PATH 里吗(echo $PATH 对照);是不是只在别的终端里 export 过?按这个顺序排查,大多数“找不到命令”的问题几分钟就能定位。环境变量本身不复杂,复杂的是随手改启动文件又不记得改过什么——每次改动留一行注释,日后会感谢自己。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。