which 寻找“执行文件”

命令解释

如果我们在终极端模式中,连续按下两次[tab]键后,会列出当前用户可以执行的所有命令。但是我们假如想知道这个命令完整的文件名或者文件地址,就可以使用这个命令进行查看。

文件说明
[root@localhost wenjie]# which [-a] command
参数:
-a : 将所有由 PATH 目录中可以找到的命令都列出来。
命令举例
例子一:分别用root用户和普通用户查看 ifconfig 命令
[root@localhost wenjie]# which ifconfig
/sbin/ifconfig <== 找到正确的执行文件
[root@localhost wenjie]# su - wenjie
[wenjie@localhost ~]$ which ifconfig <== 切换到普通用户再进行执行
/usr/bin/which: no ipconfig in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/wenjie/bin)
# 这个时候我们会发现,竟然找到不了
# 因为 which 是根据当前用户设置的 PATH 变量内的目录去查找可执行文件的。
# 不同的 PATH 设置,所找到的命令也不一样,因为当前用户中 PATH 设置中没有 /sbin

例子二:用 which 去找 which 的文件
[root@localhost wenjie]# which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
    /usr/bin/which
# 竟然会有两个which,其中一个是 alias。
# 那就是所谓的“命令别名”

例子三:请找出 cd 这个命令的完整文件名
[root@localhost wenjie]# which cd
/usr/bin/which: no cd in (/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/sbin:/home/wenjie/bin:/sbin)
# 没有cd这个命令?咱们明明就可以使用 root 执行 cd 的。
  • 之所以找不到cd这个命令,是因为它是bash内置的命令,但which默认查找的是PATH内的目录,所以就找不到了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值