如何获取 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 实用程序的更多信息。
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP