我一直想知道这一点,并没有设法在任何地方找到一个好的答案——如果两个命令行程序没有正确命名并共享相同的名称会发生什么?你会怎么称呼其中之一?比如说,有两个程序会响应brew install
——默认情况下会调用哪个程序?你会如何指定另一个?
2 回答
排在第一位的$PATH
是运行。如果要运行特定的二进制文件,请运行带有完整路径的命令。
例如,如果您有/usr/bin/brew
and/usr/local/bin/brew
和 set ,当您调用没有路径的命令时PATH=/bin:/usr/bin:/usr/local/bin
,您将运行。如果您更改to/usr/bin/brew
中的目录顺序,您将改为运行。将始终在其中运行命令(前提是它存在)。
$PATH
PATH=/usr/local/bin:/bin:/usr/bin
/usr/local/bin/brew
/usr/local/bin/brew
/usr/local/bin
当您在命令行上键入命令时,可以调用四件事。它们按以下顺序使用:
- 别名
- 功能
- 内置
- 文件
您可以使用type -a [program]
查看哪些可用以及找到它们的顺序。当您有别名时,您可以跳过它并运行用\
(ie \echo
) 找到的下一个别名。您可以使用( )调用内置命令,使用builtin
( builtin echo
) 调用找到的第一个文件。您可以通过提供路径(至少有一个)来指定要执行的特定文件。当您不指定文件的路径时,您的 shell 将查看您的, 一个以冒号分隔的要查看的目录列表。它将在您指定的每个文件夹中检查具有您的命令名称的文件,并执行找到的第一个文件。command
command echo
/
PATH
PATH