我安装了一个名为 herd 的工具(http://diy.inria.fr/herd/)。我认为它的原始版本位于全局路径中,因此我可以通过编写从任何地方调用它herd7
。现在我还有我自己编译的第二个安装。它位于不同的目录中。我不知道如何具体称呼第二个。我认为这与写出整个路径有关,但我什至不确定如何找出路径是什么以及当我猜到并尝试时
./herd --help
它只是告诉我的Is a directory
。那么,是的,我如何调用实际的工具呢?
我是 Linux 和命令行的新手,所以我知道我可能使用了错误的术语。
编辑:
好吧,我发现里面有一个名为_build
with 的目录,它本身有一个文件夹,里面有.然后从该文件夹中运行有效(但没有)。但是,我仍然需要指定吗?它不应该像原始安装一样具有命令行用法吗?default
herd
herd.exe
./herd.exe --help
./herd --help
.exe
herd7
答案1
这是惯例问题。我将使用gcc
编译器作为示例来解释。
which gcc
在 Redhat 8 中输入会产生/usr/bin/gcc
.这样做的gcc --version
结果version 4.8.5
是默认安装的版本。
如果我想下载并安装更高版本(gcc
例如版本 11.4),我会在其配置中告诉它,它的安装目录将明确为/usr/local/gcc-11.4
.这种方式是不会覆盖现有的gcc-4.8.5下的/usr/bin
。当我想运行 gcc-11.4 时,我可以显式地执行/usr/local/gcc-11.4/bin/gcc
或修改PATH
( 和LD_LIBRARY_PATH
) 环境变量,以将/usr/local/gcc-11.4/bin
和/usr/local/gcc-11.4/lib
分别放入/usr/bin
inside之前PATH
,这样当我只输入时,gcc
它会导致使用 11.4 版本而不是 11.4 版本。 4.8.5版本。执行echo $PATH
将显示该内容,并且首先在其中找到可执行文件的文件夹就是所使用的文件夹。
您可以将较新的herd
版本安装在下面/usr/local
或下面/opt
或其他任何地方。当您在几天(或几小时)后忘记内容时,手动将版本号附加到文件夹名称对管理事情有很大帮助。
您可以通过多种方式进行更新,可以通过您的每个用户进行PATH
更新,也可以通过使用 或对所有用户进行全局更新。总的来说,这并不复杂,只是了解数字组织和内部管理的问题。LD_LIBRARY_PATH
/home/<account>/.bashrc
/etc/profile.d/<some_name>.sh
modules
如何在命令行上消除第二个版本的歧义?
这一切都与PATH
环境变量下列出的文件夹的顺序以及LD_LIBRARY_PATH
.无论您的可执行文件或支持库文件首先在哪个文件夹中找到,都将使用该文件夹。因此,您可以手动重新排序这两个环境变量(如果它只适合您),或者在具有许多用户和许多可能相互冲突的软件版本的工作环境中,然后使用modules
...Modules 包是一个工具,可以简化 shell 初始化,并允许用户在会话期间使用模块文件轻松修改其环境。 https://modules.readthedocs.io/en/latest/