为什么要使用$PATH?它是什么

为什么要使用$PATH?它是什么,path,terminal,Path,Terminal,我对编程有点陌生(不是真的,但我还在学习——我们不是都在学习吗?)。虽然我知道java和python,还有一些知道C、C++、JS、C语言、HTML、CSS等(我可以在终端中导航得很好),但是我不太熟悉终端中的$PATH。 我比以前更频繁地使用Linux终端和Mac终端(如果两年前我也这么做的话),我知道对于python,它希望您像path=\path\to\python\bin:${path}\export path那样“导出”它的路径。然而,我甚至不知道它是做什么的。我试图找出答案,但我能找

我对编程有点陌生(不是真的,但我还在学习——我们不是都在学习吗?)。虽然我知道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将其描述为:

路径

命令的搜索路径。它是一个以冒号分隔的 shell在其中查找命令的目录(请参见命令 执行(见下文)。中的零长度(null)目录名
PATH
的值表示当前目录。空目录 名称可以显示为两个相邻的冒号,也可以显示为首字母或首字母 尾随冒号。默认路径依赖于系统,并且是 由安装bash的管理员设置。一个常见的值是
/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin'

运行命令时,如
python
,操作系统会尝试在
PATH
中存储的目录列表中查找
python
程序

假设您的
路径是
/usr/local/bin:/foo:/bar:/baz:/usr/bin
。当您尝试运行
python
comamnd时,操作系统将按顺序在这些目录中查找名为
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

只要在
/usr/bin/python
中找到
python
,搜索就会停止,程序就会运行。

Cool。谢谢我不知道如何控制它。。。我想这是因为它在bash下(顺便说一句,请确保您更新:)。。。bash的安全问题)