shell 命令分类

Linux下的shell命令很多,跟文件系统相关的(cp、ls、mkdir等)、跟网络相关的(ifconfig、ping等)、跟进程相关的(ps、pstree等)…

在这些命令中,有些命令是操作系统默认自带的,有些是用户在实际使用过程中使用apt-get install或yum install命令安装的第三方工具。这些命令在本质上都是相同的,都是一个可执行的二进制文件,分布在系统环境变量PATH指定的各个路径中:

$ echo $PATH
wit@pc:/# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

当用户在shell交互环境下敲击命令的名字时,shell就会到PATH指定的这些路径下去寻找这个可执行文件,创建一个子进程,将可执行文件的代码加载到子进程的地址空间执行。

  • /bin:一般存放系统命令
  • /sbin:存放超级用户使用的命令
  • /usr/local/bin:
  • /usr/local/sbin:
  • /usr/bin:
  • /usr/sbin:

内建命令

Linux系统中还有一些命令在 PATH 指定的路径下找不到的,比如cd、break、continue命令。这些是在shell内部实现的,是shell内建命令(称为builtin),这些内建命令一般是跟shell本身相关,或者外部工具不方便实现的命令,就由shell自身在内部实现了。

shell内部的命令也分为两部分

  • 老版shell解释器sh内部实现的命令

    • cd、exec、exit、export、pwd、unset、times、test
    • continue、eval、hash、readonly、return
  • Bash解释器扩展的内建命令

    • declare、echo、help、let、local、logout、builtin
    • read、printf、source、type、enable、ulimit、mapfile

    关于这些命令的详细使用,可以参考教程:Linux命令大全,这里不再赘述,就不偏离航线了,我们继续沿着当前的主线继续往下学习。

《Linux三剑客》视频教程:Linux下开发工具vim、Git、Makefile、autotools、qemu、debug精讲,从零开始一步一步写项目的Makefile,提供企业级Makefile模板,Git操作实战,vim从新手到高手,一步一步打造类似Source Insight的IDE!详情点击:王利涛老师个人淘宝店:Linux三剑客