欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

环境变量(PATH)的那些事

程序员文章站 2022-05-07 08:17:49
...

烈日中的七月,我坐在电脑前,Python倒是安完了,可是我还得顾到一边pip安装。get-pip.py运行完毕后,那个烦人的warning再度出现:

WARNING: The scripts pip, pip3 and pip3.8 are installed in '/Users/alex080318/Library/Python/3.8/bin' which is not on PATH.   

Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

没错,环境变量又出来惹事了。再瞅瞅网上五花八门的文章,讲解的环境变量添加方法都针对某个软件包(比如git或maven),几乎没有一篇文章讲清楚环境变量(PATH)到底是个啥,以及如何通用地添加环境变量。于是,它来了——

PATH是个啥?

我不想花费太多笔墨,或者搬上专业名词讲解什么是PATH,其实PATH真的很好解释。

在我们这个pip例子中,Python 3.8被安装到了/Users/TLH0rse/Library/Python/3.8/bin,pip就在这个目录下。但问题是,这个pip所在的Python是我自己用python.org上的pkg安装的,并不是系统自带Python,于是你在终端里按下pip时,终端不会理你,因为它在系统目录里搜索不到pip这个程序,我们只能把整个路径都敲出来。

zsh: command not found: pip # 敲了个寂寞

git、maven或pip这样的程序文件所隐藏的路径很深,每次都敲一遍根本不可能。为了解放我们的双手,系统研发出来了一种机制:PATH。

PATH 机制

终端其实就是shell语言的一个交互式编译器,你可以在里面定义变量,使用shell的for循环,亦或用if判断条件。当你输入命令并回车后,shell会先检查一个特定名称的shell变量,叫做PATH,看看这个变量里面有没有你的命令的路径。如果没有才会去系统目录下检索程序。

添加环境变量的原理是:你在用户根目录下创建一个名为.xxxrc的文件,其中xxx为你的shell的名称,比如我的是zsh,文件名就是.zshrc,如果是bash,那就是.bashrc。在你打开一个shell(比如zsh)时,相对应的rc文件(.zshrc)就会运行,然后再打开shell。如果你在这个文件中对PATH进行了赋值,那么你的shell在运行期间就可以使用PATH中自定义的环境变量。

注意一点:.bashrc.zshrc.bash_profile.zprofile这样的profile文件不一样。

设置PATH

在用户根目录(是用户根目录,不是/)新建一个.xxxrc文件,然后输入:

export PY_HOME=/Users/alex080318/Library/Python/3.8/bin
export GIT_HOME=/path/to/git/bin
export MAVEN_HOME=/path/to/maven/home
export PATH=$PATH:$PY_HOME:$GIT_HOME:$MAVEN_HOME

两句export分别给两个变量赋值。设置PATH时,先定义一些xxx_HOME,然后在放到最后一行PATH,每个变量用:隔开,最前面别忘加一个$PATH,否则shell可能会检索不到系统命令,弄得你一脸懵逼。

重启shell,或者source ./.xxxrc,输入pip,成功!

END