了解什么是PATH以及如何在Windows和类UNIX系统中添加路径
有时候我觉得StackOverflow上的人头上都贴着罗盘,他们总能找到PATH。
我认为它不在你的PATH中。你可能弄乱了你的PATH。你是否将其添加到了你的PATH中?检查可执行文件是否在你的PATH中。
“我是说,PATH到底是什么?”我总是这样说,红着脸,试图解决一个错误。现在,我已经在我的数据科学之旅中超过三年了,我完全知道它是什么了。几乎。
在这篇文章中,我打算教你如何在Windows和类UNIX系统中管理这个令人困惑的环境变量。
让我们开始吧!
命令也有路径
你最常使用的一个终端命令是什么?毫无疑问,我的是git
,因为我经常在写文章时进行提交。
我问这个问题是因为大多数终端命令在操作系统中也有自己的路径。要找到该路径,你只需运行which valid_command_name
。例如,这是我git
实例的路径:
$ which git # 在Windows上,使用`where`/usr/bin/git
你可能会认出上面是绝对路径。但它是指什么呢?
一个可执行二进制文件!(如果你在Windows上,你会得到一个.exe
文件路径)
它包含了当运行git
命令时要执行的指令。所有的终端命令都是以某种形式的shell脚本或可执行文件执行特定任务。
例如,你可以尝试在内置终端命令上使用which
命令,如clear
,cat
或touch
,你会得到绝对路径(甚至是which
命令本身)。
一旦你得到了可执行文件的路径,你可以尝试使用完整路径运行命令,就像这样:
$ /usr/bin/git status -s # 和`git status -s`相同M 2023/6_june/7_path/dump.ipynb
它起作用了!但有趣的是,为什么单词git
等同于绝对路径/usr/bin/git
呢?我是说,git
只是一个单词。
你的电脑怎么知道这么多命令的完整可执行路径,只需要一个关键词就可以运行它们呢?
(这就是顿悟时刻!)
使用PATH变量!
瞧,PATH!
PATH是一个变量,它保存了几乎所有终端命令(无论是内置的还是用户安装的)的可执行文件的绝对路径。
当你键入任何命令,如conda env create
,操作系统会在你的PATH变量中查找名为conda
的可执行文件。如果它找不到可执行文件,它会返回一个command not found
错误:
$ unknown_commandunknown_command: command not found
你可以使用一个命令打印你的PATH中的路径。
在类UNIX系统中:
$ echo $PATH/home/bexgboost/.local/bin:/home/bexgboost/anaconda3/bin:...
在Windows中:
$ ECHO %PATH%C:\Python39\Scripts\;C:\Python39\;C:\WINDOWS\system32;...
在PATH中,每个路径用冒号(在Unix中)或分号(在Windows中)分隔。
这些路径使得你不必记住安装在系统中的可执行文件的绝对路径。
在Windows中使用PATH
在Unix类系统和Windows系统中,编辑PATH变量的方法不同。此部分是关于在Windows中管理PATH变量的。
你最常做的操作是将新路径添加到PATH中。例如,要将C:\Users\user\Desktop\articles
目录添加到PATH中,你应该以管理员权限打开命令提示符或PowerShell。然后,运行以下命令:
$ setx PATH "%PATH%;C:\Users\user\Desktop\articles"
但是,不要急——如果你不小心,setx
命令可能会对你的PATH造成很大的影响。因此,在Windows中安全的做法是通过系统属性窗口添加路径。
以下是逐步说明和一个GIF图像,用于添加一个新路径到PATH:
- 点击开始按钮,搜索“编辑系统环境变量”,然后点击第一个结果。
- 从弹出窗口中点击“环境变量”。
- 决定新路径是否应该添加到当前用户还是整个系统中。
- 在“用户变量your_username”或“系统变量”下,向下滚动,找到“Path”变量。
- 选中它,然后点击编辑。
- 在新的弹出窗口中,点击“新建”,并粘贴新路径,例如
C:\Users\user\Desktop\articles
。 - 点击三次确定。
从最终的弹出窗口,你也可以删除或更改路径的顺序(请参见关于顺序重要性的最后一节)。
在Unix中使用PATH
在Unix类系统中,将新路径添加到PATH要简单得多。
例如,要添加路径/home/bexgboost/articles
,你必须运行以下命令:
$ export PATH="/home/bexgboost/articles:$PATH"
新路径将添加到PATH的开头。要将其添加到结尾,你必须更改$PATH
的位置:
$ export PATH="$PATH:/home/bexgboost/articles"
但是,新路径仅在当前终端会话的持续时间内添加。要将其永久添加到PATH环境变量中,你必须将export
命令附加到你的shell配置文件中。
具体的配置文件取决于你使用的shell:
- 对于Bash:将
export
命令添加到~/.bashrc
或~/.bash_profile
(你还可以考虑.profile
,请参见此处的区别)。 - 对于Zsh:将
export
命令添加到~/.zshrc
。 - 对于Fish:将
export
命令添加到~/.config/fish/config.fish
。
一旦你从列表中选择你自己的文件(我将选择.bash_profile
),使用以下echo
命令:
$ echo 'export PATH="$PATH:/home/bexgboost/articles"' >> ~/.bash_profile
然后,使用source ~/.bash_profile
重新加载配置文件,完成了。
路径的顺序
在PATH变量中的路径顺序决定了执行命令或程序时搜索目录的优先级。
当你在终端中输入一个命令时,操作系统将从左到右逐个检查PATH中的路径来查找其可执行文件。如果多个目录包含同名的可执行文件,则使用第一个目录。
例如,如果您的系统上有多个 Python 版本,则在终端中运行 python
时,将使用您 PATH 中最左边的 Python 可执行文件。
结论
在数据科学和机器学习领域,终端经常被忽视。相反,初学者更倾向于使用像 VSCode 或 JupyterLab 这样更光鲜亮丽的 IDE。
但是总有一天,不可避免地,他们必须在自己的机器上打开陈旧的 Shell。这就是当他们遇到 PATH 的巨大障碍时的情况。
我希望本文能让您摧毁这个障碍。
感谢您的阅读!
喜欢这篇文章和其中奇怪的写作风格吗?想象一下,您可以访问数十篇类似的文章,都是由一个聪明、迷人、风趣的作者(那就是我,顺便说一下:)撰写的。
只需 4.99 美元的会员费,您就可以访问不仅是我的故事,还有来自小猪AI最好、最聪明的人才的知识宝库。如果您使用我的推荐链接,您将获得我的超新星感激之情和虚拟高五,感谢您支持我的工作。
使用我的推荐链接加入小猪AI – Bex T。
作为小猪AI会员,您会为您阅读的作家支付会员费的一部分,并获得对每个故事的完全访问权限…
ibexorigin.medium.com