我对编程有点陌生(不是真的,但我仍在学习 - 我们不是吗?)。虽然我了解 Java 和 Python,并且了解 C、C++、JS、C#、HTML、CSS 等(并且我可以在终端中很好地导航),但我不熟悉终端中的 $PATH 是什么。
我使用 Linux 终端和 Mac 终端的频率比以前要高得多(如果我两年前使用过的话),而且我知道对于 python,它希望你“导出”它的路径,例如PATH=\path\to\python\bin:${PATH}\ export PATH
。然而,我什至不知道它是做什么的。我试图找出答案,但我所能找到的只是人们说“导出这条路径并导出那条路径”。
那么,它是什么以及为什么使用它?我明白(如果你为Python这样做),它基本上使“python”(或“python2”或“python3”)成为一个变量,但我只是不明白它是什么的概念。
man bash
将其描述为:
PATH
命令的搜索路径。它是一个以冒号分隔的列表
shell 在其中查找命令的目录(请参阅 COMMAND
执行如下)。中的零长度(空)目录名
的价值PATH
表示当前目录。空目录
名称可以显示为两个相邻的冒号,或者作为首字母或
尾随冒号。默认路径与系统相关,并且是
由安装 bash 的管理员设置。一个共同的价值观是/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin'
.
当您运行命令时,例如python
,操作系统尝试寻找python
程序存储在目录列表中PATH
.
假设你的PATH
is /usr/local/bin:/foo:/bar:/baz:/usr/bin
。当您尝试运行python
命令,操作系统将寻找名为的可执行文件python
按顺序在这些目录中。在 Linux 上,您可以使用以下命令观看它执行此操作strace
命令:
$ PATH=/usr/local/bin:/foo:/bar:/baz:/usr/bin strace -f /bin/bash -c 'python --version' 2>&1 | grep 'stat.*python'
stat("/usr/local/bin/python", 0x7fff98b63d00) = -1 ENOENT (No such file or directory)
stat("/foo/python", 0x7fff98b63d00) = -1 ENOENT (No such file or directory)
stat("/bar/python", 0x7fff98b63d00) = -1 ENOENT (No such file or directory)
stat("/baz/python", 0x7fff98b63d00) = -1 ENOENT (No such file or directory)
stat("/usr/bin/python", {st_mode=S_IFREG|0755, st_size=4864, ...}) = 0
立刻python
发现于/usr/bin/python
,搜索停止,程序运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)