Linux 环境变量入门:PATH 是怎么找到你的命令的
在终端里敲 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 过?按这个顺序排查,大多数“找不到命令”的问题几分钟就能定位。环境变量本身不复杂,复杂的是随手改启动文件又不记得改过什么——每次改动留一行注释,日后会感谢自己。
- 点赞
- 收藏
- 关注作者
评论(0)