Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在系统上找到Unix程序的所有版本?_Linux_Shell_Unix_Terminal_Version - Fatal编程技术网

Linux 如何在系统上找到Unix程序的所有版本?

Linux 如何在系统上找到Unix程序的所有版本?,linux,shell,unix,terminal,version,Linux,Shell,Unix,Terminal,Version,这是课程作业中提到的,我被卡住了: 许多系统都有多个版本的实用程序,因此用户可以选择自己想要的版本。建议使用命令查找系统上所有版本的make。什么决定了用户实际得到的是哪一个?用户如何覆盖默认值 您将如何做到这一点?UNIX如何查找程序 由于历史原因,类Unix系统将其可执行程序存储在不同的目录中 要运行命令时搜索的目录存储在名为$PATH的目录中,用冒号(:)分隔。要查看其内容,请在终端窗口中键入echo“$PATH”。在我的系统上,这显示(拆分以避免排长队) 他们是按那个顺序被搜查的。如果我

这是课程作业中提到的,我被卡住了:

许多系统都有多个版本的实用程序,因此用户可以选择自己想要的版本。建议使用命令查找系统上所有版本的
make
。什么决定了用户实际得到的是哪一个?用户如何覆盖默认值

您将如何做到这一点?

UNIX如何查找程序 由于历史原因,类Unix系统将其可执行程序存储在不同的目录中

要运行命令时搜索的目录存储在名为
$PATH
的目录中,用冒号(
)分隔。要查看其内容,请在终端窗口中键入
echo“$PATH”
。在我的系统上,这显示(拆分以避免排长队)

他们是按那个顺序被搜查的。如果我想运行
make
,系统将首先检查
/usr/local/sbin/make
(它不存在),然后检查
/usr/local/bin/make
(也不存在),然后检查
/usr/bin/make
(它确实存在,所以运行该命令)

如何确定哪一个会运行 程序
可用于查看
$PATH
以确定要选择的程序。在我的系统上运行make生成输出
/usr/bin/make

方便的是,
,它有一个
-a
标志来打印所有匹配的可执行文件,而不仅仅是第一个。(我通过查阅手册,通过运行
man-which
)发现了这一点,因此
which-a java
应该告诉您
java
的所有版本都在哪里

更改默认值 如果愿意,您可以更改
$PATH
变量的内容,就像您可以更改任何环境变量一样:如果我运行
PATH=“$PATH:/home/anko/bin”
,下次系统需要查找程序时,它将检查所有以前的
$PATH
,如果在我的主目录中找不到任何其他内容,还可以添加一个名为
bin
的目录


我还可以通过执行
PATH=“/home/anko/bin:$PATH”

您尝试过什么,预先设置目录,使其优先于其他任何内容?您可能想阅读有关
$PATH
环境变量的信息。我曾尝试使用find/-name make,但这似乎不起作用
find
,正如您所描述的那样。您可能正在扫描一个真正庞大的网络文件系统。因此,请尝试限制搜索内容,即
find/usr-name'*[Mm][Aa][Kk][Ee]*'
。有了
*
,您将获得额外的输出,但它会发现类似
gmake、cmake、cmake
等的想法。谢谢您帮了我很多忙。如果问题是这样的呢?许多系统都有多个版本的实用程序,因此用户可以选择自己想要的版本。建议使用一个命令来查找所有版本@Anko?@Moh
,如果它们具有相同的名称,那么-a
会这样做。如果他们没有相同的名字,你必须考虑其他一些标准,使他们成为彼此的“版本”。(当某物是“不同的版本”时,当它是完全不同的东西时,这是一种哲学问题…:)
/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:
/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl