第一次看懂环境变量:命令是怎么被找到的
你有没有过这种经历:在终端里敲 python3 能跑,换个目录敲 python3 还是能跑,可你明明没有告诉系统它装在哪?答案藏在一个叫环境变量的东西里。
环境变量说白了就是一组 名字=值,系统和程序启动时都会先读它们。最常见的就是 PATH。你在终端敲一个命令时,系统并不是全盘搜索,而是按 PATH 里列出的目录顺序,一个一个去找同名的可执行文件,找到第一个就停下。
想看自己机器的 PATH,敲 echo $PATH 就行,输出是一串用冒号隔开的目录,比如 /usr/local/bin:/usr/bin:/bin。冒号前面排得越靠前,优先级越高。同一个命令装了两个版本时,排在前面的那个会被先找到,这就是为什么有时候你明明装了新版,敲出来却还是旧版:旧版所在的目录排在了前面。
想确认某个命令到底用的是哪一个,敲 which python3,它会直接告诉你完整路径。想看全部环境变量,敲 env 或者 printenv,输出就是一张当前环境的清单。
自己加目录也有固定写法。临时生效只影响当前终端窗口,关掉就没了:export PATH=$PATH:/home/你的用户名/tools。注意等号两边不要加空格,而且一定要带着原来的 $PATH 一起写,只写新目录会把原来的路径全盖掉,系统命令就找不到了。
想让它每次打开终端都生效,就把同一行写进 ~/.bashrc(用 bash 的话)或者 ~/.zshrc(用 zsh 的话),保存后敲 source ~/.bashrc 重新加载一次,不用重开终端。
还有一个容易踩的坑:环境变量只对“之后启动”的程序生效。已经开着的终端不会自动跟着变,改完记得新开一个窗口或者手动 source 一下再验证。
下次再遇到“命令找不到”或者“版本不对”,先别急着重装,敲 echo $PATH 和 which 命令名 看一眼,很多时候问题就出在路径顺序上。
- 点赞
- 收藏
- 关注作者
评论(0)