环境变量入门——PATH到底是什么

举报
yd_250779715 发表于 2026/11/09 10:34:19 2026/11/09
【摘要】 刚开始用 Linux 时,很多人都会遇到一个奇怪的现象:在终端里输入 ls、python3 就能直接运行,可自己刚编译好的程序却提示 command not found。差别不在程序本身,而在 PATH 这个环境变量里。 一、PATH 就是一张“寻人启事”PATH 保存了一串目录,目录之间用冒号隔开。输入命令后,Shell 会按顺序去这些目录里找同名的可执行文件,找到第一个就运行,找遍了都没...

刚开始用 Linux 时,很多人都会遇到一个奇怪的现象:在终端里输入 ls、python3 就能直接运行,可自己刚编译好的程序却提示 command not found。差别不在程序本身,而在 PATH 这个环境变量里。

一、PATH 就是一张“寻人启事”

PATH 保存了一串目录,目录之间用冒号隔开。输入命令后,Shell 会按顺序去这些目录里找同名的可执行文件,找到第一个就运行,找遍了都没有,才报错 command not found。

用 echo $PATH 就能看到它,例如 /usr/local/bin:/usr/bin:/bin。排在前面的目录优先级更高:如果两个目录里有同名程序,排在前面的先生效。

二、动手看一看

输入 which ls,会显示 /usr/bin/ls,这就是 Shell 找到的 ls 的位置。再试 which python3,同样能看到它的完整路径。反过来,输入一个不存在的命令,比如 hello123,Shell 会老实告诉你找不到。

三、让自己的程序也能直接运行

假设你在 ~/tools 里放了一个自己写的脚本 hello,直接输入 hello 会失败,因为 ~/tools 不在 PATH 里。有两种办法:

  • 临时生效:export PATH=$PATH:~/tools,只对当前终端有效,关掉就失效,适合临时测试。
  • 长期生效:把同一行写进 ~/.bashrc,再执行 source ~/.bashrc,以后每次打开终端都有效。

注意两点:第一,一定要写 $PATH: 在前面,意思是“保留原来的 PATH,再追加新目录”,直接写 PATH=~/tools 会把原来的路径全部覆盖,连 ls 都会找不到;第二,export 不能少,它负责把变量交给子进程,否则只在当前 Shell 里可见。

四、新手最容易踩的三个坑

  • 坑一:把当前目录 . 加进 PATH。看起来方便,但如果有人在共享目录里放了一个叫 ls 的恶意脚本,你一进目录就会中招。需要运行当前目录的程序时,写 ./hello 才是安全做法。
  • 坑二:改完 ~/.bashrc 不 source,新开终端才生效,在旧终端里反复试都看不到效果。
  • 坑三:PATH 里出现重复或不存在的目录,找命令时会白白多走几步,虽然不致命,但时间久了会让启动变慢,定期清理更清爽。

小结

PATH 不是什么神秘配置,它就是 Shell 找命令时按顺序翻的一叠目录清单。记住三句话就够了:用 echo 查看 PATH,用 which 定位命令,用 export 追加新目录。理解了它,command not found 就从报错变成了一条可以顺藤摸瓜的线索。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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