环境变量(PATH)的那些事
烈日中的七月,我坐在电脑前,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
上一篇: 正则的那点事
下一篇: python 虚拟环境的创建与使用方法