我对编程很新(不是真的,但我还在学习 - 不是我们所有人吗?)。虽然我知道Java和Python,并且知道C,C ++,JS,C#,HTML,CSS等(并且我可以在终端中很好地导航),但我不熟悉终端中$ PATH的内容。 / p>
我比以前更频繁地使用Linux终端和Mac终端(如果我两年前都做过),我知道对于python,它希望你“导出”它的路径,如{ {1}}。但是,我甚至都不知道它的作用。我试图找出答案,但我能找到的只是人们说“导出这条路并导出那条路径。”
那么,它是什么以及为什么要使用它?我理解(如果你是为Python做的),它基本上使'python'(或'python2'或'python3')变量,但我只是不明白它的概念。
答案 0 :(得分:3)
man bash
将其描述为:
<强> PATH 强>
命令的搜索路径。这是一个以冒号分隔的列表 shell查找命令的目录(请参阅命令 执行如下)。中的零长度(null)目录名称 值
PATH
表示当前目录。一个空目录 名称可能显示为两个相邻的冒号,或作为初始或 尾随结肠。默认路径是系统相关的,并且是 由安装bash的管理员设置。一个共同的价值是/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin'
。
当您运行命令(如python
)时,操作系统会尝试在python
中存储的目录列表中查找PATH
程序。
假设您的PATH
为/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
只要在python
中找到/usr/bin/python
,搜索就会停止,程序就会运行。