【问题标题】:What happens if two command line programs share the same name? [closed]如果两个命令行程序共享相同的名称会发生​​什么? [关闭]
【发布时间】:2013-07-12 11:12:26
【问题描述】:

我一直想知道这一点,但在任何地方都没有找到好的答案——如果两个命令行程序没有正确命名空间并共享相同的名称会发生​​什么?你会怎么称呼其中之一?比如说,有两个程序响应了brew install——默认情况下会调用哪个程序?你会如何指定另一个?

【问题讨论】:

    标签: bash shell unix command-line terminal


    【解决方案1】:

    $PATH 中的第一个运行。如果要运行特定的二进制文件,请运行带有完整路径的命令。

    例如,如果您有/usr/bin/brew/usr/local/bin/brew,并设置了PATH=/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 中的命令(前提是它存在)。

    【讨论】:

      【解决方案2】:

      当您在命令行上键入命令时,可以调用四件事。它们按以下顺序使用:

      1. 别名
      2. 功能
      3. 内置
      4. 文件

      您可以使用type -a [program] 查看哪些可用以及找到它们的顺序。当您有别名时,您可以跳过它并运行下一个使用\(即\echo)找到的别名。您可以使用builtin (builtin echo) 调用内置命令,使用command (command echo) 调用找到的第一个文件。您可以通过提供一个路径(至少有一个/)来指定要执行的特定文件。当您没有指定文件的路径时,您的 shell 将查看您的 PATH,这是一个以冒号分隔的要查看的目录列表。它将在PATH 中指定的每个文件夹中检查具有您的命令名称的文件,并执行找到的第一个文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-07
        • 2014-11-27
        • 1970-01-01
        • 2021-10-13
        • 2014-11-12
        相关资源
        最近更新 更多