如何获取 Linux 命令的路径?


您从终端窗口运行的 Linux 命令可以是内置命令(系统的一部分)、函数(输入某些命令时运行的应用程序)、别名(命令的另一个名称)或外部可执行文件(您下载的程序)。您可以使用 which、command、whereis、whatis 和 type 工具来确定每个命令是什么以及它们位于哪里。

我们将重点关注 **which、command、types** 和 **whereis** 命令,因为它们通常存在于大多数基于 Linux 的操作系统中。

因此,让我们在本篇文章中探讨如何获取 Linux 命令的路径。

PATH 环境变量

在我们深入了解这些实用程序的细节之前,让我们首先了解一下,应用程序(例如我们的 shell,我们在其中输入命令的程序)会在名为 PATH 的环境变量中存储的文件夹列表中搜索命令。每个文件夹都用冒号 ":" 分隔。

我们可以使用 echo 函数查看此变量中的内容。

命令

$ echo $PATH

输出

/sbin:/bin:/usr/sbin:/usr/bin

当我们在计算机上安装可执行文件以便可以从任何位置运行它时,我们必须确保 PATH 环境变量包含可执行文件的位置。

我们可以通过键入以下命令临时更改 PATH 变量

命令

$ export PATH=$PATH:/newdir/path $ echo $PATH

输出

/sbin:/bin:/usr/sbin:/usr/bin:/newdir/path

重新启动计算机后,上述创建的 PATH 将被重置。

我们可以通过编辑 .bashrc 文件永久更改 PATH 环境变量。

export PATH=$PATH:/newdir/path

which 命令

大多数 Linux 操作系统发行版都包含 which 实用程序。我们可以使用此工具来确定 Linux 程序的位置。

命令

$ which echo

输出

/usr/bin/echo

当我们在终端窗口中键入 echo 命令时,它将执行位于 /bin/ 目录下的 echo 可执行文件。

此外,which 命令有一个 -a 选项,它将打印出所有匹配的路径 -

命令

$ which -a php

输出

/usr/bin/php
/usr/bin/php
/bin/php

我们在两个不同的目录中有两个可执行文件。一个位于 /usr/bin/,另一个位于 /opt/php8/。前者默认使用,因为其位置出现在 PATH 环境变量中,而后者具有正确的权限。

whereis 命令

让我们快速了解一下 whereis(位于何处)实用程序。此工具查找程序所在的位置。

如果我们直接调用这些实用程序,它们将向我们显示二进制文件、源代码和手册页的所有位置 -

命令

$ whereis php

输出

php: /usr/bin/php /usr/lib64/php /etc/php.ini /etc/php.d /usr/include/php /usr/share/php /usr/share/man/man1/php.1.gz

我们可以使用 -b 参数仅显示二进制文件。

命令

$ whereis -b php

输出

php: /usr/bin/php /usr/lib64/php /etc/php.ini /etc/php.d /usr/include/php /usr/share/php

如果我们只想显示手册,则使用 -m 参数 -

命令

$ whereis -m php

输出

php: /usr/share/man/man1/php.1.gz

type 命令

type 命令不仅可以显示 Linux 命令的路径,还可以确定目标是内部命令、函数、别名还是外部可执行文件。

让我们使用 type 命令和 -p 参数来查看提供的 Linux 命令的路径 -

命令

$ type -p php

输出

/usr/bin/php

如果您不包含参数,它将显示命令定义。

命令

$ type echo

输出

echo is a shell builtin

如果我们使用 -a 选项,它将显示命令描述、可执行文件类型和完整文件名 -

命令

$ type -a echo

输出

echo is a shell builtin
echo is /usr/bin/echo
echo is /usr/bin/echo
echo is /bin/echo

我们还可以使用命令 type -t 显示可执行文件类型。

命令

$ type -t echo

输出

builtin

上述命令输出为 builitin,因为 echo 是内置文件类型。

命令

$ type -t ls

输出

alias

类似地,上面 ls 命令是别名文件,下面的命令显示 php 命令只是一个文件(可执行文件)。

命令

$ type -t php

输出

file

command 命令

另一个用于查找 Linux 命令位置的有用工具是 command 命令。

此工具让我们知道我们是在处理可执行文件还是别名命令。

command 具有两个选项“-v”和“-V”,其中“-v”仅输出结果,“-V”选项以句子格式提供输出。

命令

$ command -v php

输出

/usr/bin/php

命令

$ command -V php

输出

php is /usr/bin/php

命令

$ command -v echo

输出

echo

命令

$ command -V echo

输出

echo is a shell builtin

我们必须添加 -v 或 -V 参数。

否则,它将执行我们提供的 Linux 命令。

命令

$ command ls

输出

command filebeat-6.4.1-x86_64.rpm test.pcap config pmgo pmta4.0.zip

结论

我们可以使用 which、command、type 和 whereis 命令查找 Linux 命令的位置。一些实用程序显示的信息比其他实用程序多。

在本教程中,我们了解到在使用某些命令时存在一些注意事项,但基本上,我们可以使用这些工具来获取有关特定 Linux 实用程序的更多信息。

更新于: 2022-12-01

4K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.