【Linux学习笔记】7:命令搜索命令whereis与which

命令搜索命令只能去搜索系统命令,而不能搜索那些自己建立的文件。

whereis搜索命令所在路径及帮助文档所在位置

whereis [-b -m] 命令名

选项:-b只查找执行文件,-m只查找帮助文件。

[root@bogon ~]# whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

可以看到ls命令的执行文件是在/bin/下,所以它是所有用户都能执行的命令。后面的两个文件是它的帮助文档的绝对路径。

[root@bogon ~]# whereis -b ls
ls: /bin/ls
[root@bogon ~]# whereis -m ls
ls: /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

which还能查看到命令的别名

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

这说明ls命令支持颜色显示,它的颜色显示方案默认是auto(普通文件是黑的,目录文件是蓝的,执行文件是绿的等)。
这里写图片描述

不是所有的命令都有别名,对没有别名的命令,which就只能看到命令的执行文件的路径了。

[root@bogon ~]# which pwd
/bin/pwd

不是所有的命令都能找到可执行文件,如用whereis来看一下cd命令。

[root@bogon ~]# whereis cd
cd: /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz

cd这样的命令是Linux的shell(Linux操作系统和用户交互所必须的东西)的内置命令,它是shell自带的,所以不需要在Linux系统中有执行文件。也就是说通过whereis与which看到的命令都是外部的。

用which也是找不到的,如下。

[root@bogon ~]# which cd
/usr/bin/which: no cd in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

但是可以看到一堆目录,关于它的解释如下。
在Linux中要想执行路径,就需要绝对路径,本来执行ls是要这样写的:

[root@bogon ~]# /bin/ls
anaconda-ks.cfg  install.log  install.log.syslog

但是这样很不方便,系统提供了一个叫PATH的环境变量(系统搜索命令的路径,用冒号分隔),当执行ls时,系统会去上面的路径中搜索是否有这样的脚本或执行文件,找到了就会执行它。用户通过设置环境变量,来更好的运行进程。

[root@bogon ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

因为有PATH的存在,所以系统命令是可以不打绝对路径的。如果是自己写的程序,执行时就需要绝对路径,否则就需要放在PATH所记录的路径中去。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值