在 Linux 中选择多个同名的可执行文件

Posted

技术标签:

【中文标题】在 Linux 中选择多个同名的可执行文件【英文标题】:Choosing between multiple executables with same name in Linux 【发布时间】:2010-09-29 15:13:42 【问题描述】:

我使用的系统在/usr/bin 中安装了gnuplot。我没有root,但我需要更新版本的gnuplot,所以我安装到$HOME/usr/bin

我将$HOME/usr/bin 添加到我的路径中,但如果我只使用 gnuplot 命令,它仍会执行/usr/bin 中的那个。我宁愿不必在每次必须使用它时都指定$HOME/usr/bin/gnuplot

如何告诉 Linux 使用我的主目录中的那个,而不是 /usr/bin 中的那个?

【问题讨论】:

【参考方案1】:

可执行文件按 PATH 顺序查找。您需要在路径前添加 $HOME/usr/bin,如下所示:

export PATH="$HOME/usr/bin:$PATH"

【讨论】:

只是好奇,这是否也适用于其他操作系统?【参考方案2】:

可执行文件按 PATH 顺序查找。您的 PATH 显然设置为 /usr/bin~/usr/bin/ 之前。

【讨论】:

如果您提供一些文档来支持您的观点会更好。【参考方案3】:

除了如前所述修改 PATH 外,您还可以使用这样的别名(在 BASH 中)

alias gn=$HOME/usr/bin/gnuplot

然后你只需运行它

gn

【讨论】:

不太确定硬编码路径是否是别名的好主意。我宁愿用它来指定我一直想要的标志。 在这种情况下,你想要一个特定版本的程序,我认为没有问题。 这个真的好用【参考方案4】:

Bombe 说的没问题。我要补充一点,您应该在用户的 bashrc ($HOME/.bashrc) 中声明用户特定的 PATH 条目,因此您的 PATH 设置仅适用于您的用户。

【讨论】:

他没有 root,所以我怀疑他是否可以全局更改 PATH :) 请重新阅读我的回答。我声明他应该更改自己用户的 .bashrc,这当然可以由自己的用户(实际上是文件的所有者)写入。

以上是关于在 Linux 中选择多个同名的可执行文件的主要内容,如果未能解决你的问题,请参考以下文章

在 CMake 中添加多个可执行文件

当时学习《鸟哥的Linux私房菜-基础学习篇》记录的点

在linux中如何编译C程序,使之成为可执行文件?如何调试?

Linux 下执行本目录的可执行文件(命令)为什么需要在文件名前加“./”

linux当前目录下的可执行文件不能直接执行的原因

Linux目录结构