Linux系统之which命令的基本使用

举报
江湖有缘 发表于 2024/10/27 23:48:02 2024/10/27
【摘要】 Linux系统之which命令的基本使用

在这里插入图片描述

一、which命令介绍

which命令是Linux和Unix系统中的一个非常实用的工具,它用来查找并显示给定命令的完整路径。这对于确定哪个版本的程序将被执行或确认某个命令是否在系统的PATH环境变量中可用特别有用。

二、which命令的使用帮助

2.1 which命令的基本语法

在命令行终端中,我们使用--help查询which命令的基本帮助信息。

[root@RockyLinux-server001 ~]# which --help
Usage: /usr/bin/which [options] [--] COMMAND [...]
Write the full path of COMMAND(s) to standard output.

  --version, -[vV] Print version and exit successfully.
  --help,          Print this help and exit successfully.
  --skip-dot       Skip directories in PATH that start with a dot.
  --skip-tilde     Skip directories in PATH that start with a tilde.
  --show-dot       Don't expand a dot to current directory in output.
  --show-tilde     Output a tilde for HOME directory for non-root.
  --tty-only       Stop processing options on the right if not on tty.
  --all, -a        Print all matches in PATH, not just the first
  --read-alias, -i Read list of aliases from stdin.
  --skip-alias     Ignore option --read-alias; don't read stdin.
  --read-functions Read shell functions from stdin.
  --skip-functions Ignore option --read-functions; don't read stdin.

Recommended use is to write the output of (alias; declare -f) to standard
input, so that which can show aliases and shell functions. See which(1) for
examples.

If the options --read-alias and/or --read-functions are specified then the
output can be a full alias or function definition, optionally followed by
the full path of each command used inside of those.

Report bugs to <which-bugs@gnu.org>.

2.2 which命令的帮助解释

选项 描述
--version, -v, -V 显示版本信息并成功退出。
--help 显示帮助信息并退出。
--skip-dot 跳过PATH中以点(.)开头的目录。
--skip-tilde 跳过PATH中以波浪号(~)开头的目录。
--show-dot 不要在输出中将点(.)扩展为当前目录。
--show-tilde 对于非root用户,在输出中使用波浪号表示家目录。
--tty-only 如果不在TTY上,则停止处理右侧的选项。
--all, -a 打印PATH中的所有匹配项,而不仅仅是第一个。
--read-alias, -i 从标准输入读取别名列表。
--skip-alias 忽略--read-alias选项;不读取标准输入。
--read-functions 从标准输入读取shell函数。
--skip-functions 忽略--read-functions选项;不读取标准输入。

三、which命令的基本使用

3.1 检查实践环境

  • 检查操作系统版本
[root@RockyLinux-server001 ~]# cat /etc/os-release
NAME="Rocky Linux"
VERSION="9.4 (Blue Onyx)"
ID="rocky"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.4"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Rocky Linux 9.4 (Blue Onyx)"
ANSI_COLOR="0;32"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:rocky:rocky:9::baseos"
HOME_URL="https://rockylinux.org/"
BUG_REPORT_URL="https://bugs.rockylinux.org/"
SUPPORT_END="2032-05-31"
ROCKY_SUPPORT_PRODUCT="Rocky-Linux-9"
ROCKY_SUPPORT_PRODUCT_VERSION="9.4"
REDHAT_SUPPORT_PRODUCT="Rocky Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.4"
  • 检查内核版本
[root@RockyLinux-server001 ~]# uname -r
5.14.0-427.13.1.el9_4.x86_64

3.2查找一个命令的可执行文件位置

这条命令会输出ls命令所在的完整路径,例如:/usr/bin/ls。which命令依据用户配置的 PATH 环境变量中的目录来搜索可执行文件。因此,不同的 PATH 配置会导致找到的命令位置不同。

[root@RockyLinux-server001 ~]# which ls
alias ls='ls --color=auto'
	/usr/bin/ls

3.3 检查某程序是否安装

如果你想知道你的系统上是否安装了某个特定的软件包,如果返回了路径,则表示已安装;如果没有任何输出,则可能意味着该命令未被找到(即没有安装)。

[root@RockyLinux-server001 ~]# which tree
/usr/bin/tree

3.4 命令目录简介

  • /bin: 包含系统启动和运行所必需的基本命令,这些命令对所有用户都可用。
  • /sbin: 包含系统管理员使用的系统二进制文件,主要用于系统管理和维护任务。
  • /usr/bin: 包含大部分用户级别的命令和应用程序,是 /bin 的扩展,提供更多的非核心命令。
  • /usr/sbin: 类似于 /sbin,但包含更多用户级的系统管理命令,用于扩展 /sbin 的功能。

四、注意事项

  • 命令查找范围有限:which命令主要在环境变量$PATH所设定的路径中查找可执行文件,不会查找没有添加到环境变量路径中的命令。
  • 只查找可执行文件:它仅用于查找可以直接执行的二进制文件、脚本等,对于配置文件、库文件等非可执行文件无法查找。
  • 返回第一个匹配结果:当多个同名可执行文件在$PATH的不同目录下存在时,which命令只会返回它在环境变量路径中找到的第一个匹配的文件路径。
  • 别名优先显示:如果对命令设置了别名,which命令会优先显示别名对应的文件路径,而不是原始命令的路径。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。