如果我安装两个共享一个 shell 命令的包会发生什么?

如果我安装两个共享一个 shell 命令的包会发生什么?

例如,gprologswi-prolog-nox都提供prolog。如果我同时安装它们,我该如何在它们之间进行选择,如果我只输入,会说什么bash或做什么?shprolog

答案1

这取决于软件包安装的内容。有几种不同的可能性:

  1. 两个包都会将可执行文件安装到同一个目录中。

    例如,如果两者都提供/bin/prolog,那么最后安装的包将覆盖之前安装的包,最终您将得到一个版本的prolog。然而,这并不常见,因为dpkg如果您尝试安装两者,它会抱怨包冲突并拒绝安装。

  2. 每个包都会在不同的路径安装可执行文件。

    例如,一个在 中,/bin/prolog另一个在 中/usr/bin/prolog。那么,运行时运行哪一个prolog将取决于哪一个在你的 PATH 中排在第一位。在 Ubuntu 系统上,默认 PATH 是:

    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
    

    由于/usr/bin在 之前/bin,这意味着prolog将运行/usr/bin/prolog。您可以通过运行来查看系统中将发生的情况:

    type -a prolog
    

    这将打印prolog找到的所有可执行文件(或函数或别名),然后运行echo $PATH以查看您的 PATH 并找出首先调用哪个。

  3. prolog这些程序可能会通过向您的 shell 的启动文件添加别名或函数为您提供命令。

    在这种情况下,别名或函数将始终在任何独立可执行文件之前执行。因此,如果你有一个别名一个/usr/local/bin/prolog文件,那么prolog将始终运行别名,而不会运行文件。

相关内容