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