Bash 如果两个命令行程序共享相同的名称,会发生什么情况?
我一直想知道这一点,但在任何地方都没有找到一个好的答案——如果两个命令行程序的名称空间不正确并且共享相同的名称,会发生什么情况?你怎么称呼其中一个呢?例如,有两个程序响应Bash 如果两个命令行程序共享相同的名称,会发生什么情况?,bash,shell,unix,command-line,terminal,Bash,Shell,Unix,Command Line,Terminal,我一直想知道这一点,但在任何地方都没有找到一个好的答案——如果两个命令行程序的名称空间不正确并且共享相同的名称,会发生什么情况?你怎么称呼其中一个呢?例如,有两个程序响应brew安装——默认情况下会调用它们?如何指定另一个路径?将运行$PATH中的第一个路径。如果要运行特定的二进制文件,请使用其完整路径运行命令 例如,如果您有/usr/bin/brew和/usr/local/bin/brew,并且设置了路径=/bin:/usr/bin:/usr/local/bin,那么当您调用没有路径的命令时,
brew安装
——默认情况下会调用它们?如何指定另一个路径?将运行$PATH
中的第一个路径。如果要运行特定的二进制文件,请使用其完整路径运行命令
例如,如果您有/usr/bin/brew
和/usr/local/bin/brew
,并且设置了路径=/bin:/usr/bin:/usr/local/bin
,那么当您调用没有路径的命令时,您将运行/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]
查看哪些可用以及找到它们的顺序。当您有别名时,可以跳过它并运行下一个别名,该别名带有\
(即\echo
)。您可以使用builtin
(builtin-echo
)调用内置命令,并使用command
(command-echo
)调用找到的第一个文件。您可以通过提供路径(至少有一个/
)来指定要执行的特定文件。当您不指定文件路径时,shell将查看您的路径
,这是一个以冒号分隔的目录列表。它将在路径中指定的每个文件夹中检查具有您的命令名的文件,并执行找到的第一个文件夹