linux的内建命令和外部命令

摘要:

   Linux命令有内部命令(内建命令)和外部命令之分,内部命令和外部命令功能基本相同,但是其工作机制相差很大。本文就内建命令和外部命令做一下介绍。

一、内部命令(内建命令)

   内部命令,实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留在系统内存中。内部命令是写在bashy源码里面的,其执行速度比外部命令快,因为解析内部命令shell不需要创建子进程。比如:exit,history,cd,echo等。

   所以在内部命令被执行的时候是先去内存里面查找,然后再被执行。

二、外部命令

   外部命令是linux系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,因此系统加载时并不随系统一起被加载到内存中。只有在需要时才被系统调用到内存。通常外部命令的实体并不包含在shell中,但是其命令执行过程是由shell程序控制的。shell程序管理外部命令执行的路径查找、加载存放,并控制命令的执行。外部命令是在bash之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin……等等。可通过“echo $PATH”命令查看外部命令的存储路径,比如:ls、vi等。

三、内部命令和外部命令的其他相关介绍

  1)如何区分二者

   判断一个命令是内部命令还是外部命令的方法是:type command

 

[root@localhoast ~]# type pwd
pwd is a shell builtin
[root@localhoast ~]# type vim
vim is /usr/bin/vi

   显示的builtin就表示该命令是内部(内建命令),显示出执行路径的命令就是外部命令。

 2)二者的执行过程

   内部命令被用户执行时系统会从内存中去调用,调用的速率快。外部命令被执行的时候,系统将会读取环境变量文件.bash_profile、/etc/profile去找PATH路径。

然后在提一下命令的调用,有些外部命令被使用过后,会存在在hash表中,当你再次输入该命令它的调用会是这样一个过程。

hash——>内置命令——>PATH   命令的调用其实应该是这样一个过程。hash的优先级最高,然后是内部命令,最后是外部命令。

[root@localhost ~]# pwd             
/root
[root@localhost ~]# ls
anaconda-ks.cfg  install.log  install.log.syslog
[root@localhost ~]# hash -l  //显示hash表
builtin hash -p /bin/cat cat
builtin hash -p /bin/ls ls

从hash表中可以看出,hash表不存放系统内置命令。

原创文章,作者:hanlln1,如若转载,请注明出处:http://www.178linux.com/52643

(4)
hanlln1hanlln1
上一篇 2016-10-18
下一篇 2016-10-18

相关推荐

  • LVM 逻辑卷管理器

    1、什么是LVM:PV、PE、VG、LV的意义    LVM:Logical Volume Manager(逻辑卷管理器),可以将多个物理分区整合成看起来像一个磁盘一样,并可随意增加或减少逻辑卷大小 dm:device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块; /dev/mapper/VG_NAME-LV_NAME …

    Linux干货 2016-09-19
  • OpenSSL用法详解

    OpenSSL用法详解 OpenSSL:        组件:libcrypto,libssl                 openssl &nb…

    Linux干货 2016-09-23
  • Linux 系统架构

    1.内核     1.1.组成部分         1.1.1.系统调用接口         1.1.2.进程管理 &n…

    Linux干货 2016-06-04
  • keepalived双主模型的实现

    一、简介  keepalived 简介:是服务器高可用的一个重要软件,它的核心组件有vrrp ,stack, checker ,ipvs, warpper, watch dog  它是vrrp协议的实现,原生设计目的为高可用ipvs服务;keepalived能够通过配置文件中定义生成ipvs规则 并能够对RS的健康状态进行检测;vrrp_…

    Linux干货 2014-05-22
  • 安装CentOS 6.9与CentOS7.3

    今天学习了如何安装CentOS6.9与CentOS7.3. 安装CentOS6.9 首先打开虚拟机如下如所示: 然后点击创建新的虚拟机: 选择典型,然后点击下一步: 一般会选择稍后安装操作系统,然后点击下一步 客户机操作系统有很多,因为今天只安装CentOS 所以选择Linux 版本则选择CentOS 64 位 (因为CentOS7以上没有32位版本,只有C…

    2017-07-14
  • 推荐-使用iptables作为网络防火墙构建安全的网络环境

    使用iptables作为网络防火墙构建安全的网络环境 使用iptables作为网络防火墙构建安全的网络环境 前言 网络防火墙的优势 实验拓扑图 实验环境 实验步骤 防火墙未设置前对所有服务器的测试 针对不同服务器进行”非法”访问 定义网络防火墙规则 再次针对不同服务器进行”非法”访问 测试服务器是否可访问 总结 前言 一般情况下iptables只作为主机防火…

    Linux干货 2016-03-31