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等。
可以通过type命令查看是内部命令还是外部命令。
以上就是小编今天的分享了,希望可以帮助到大家。
linux的内部命令和外部命令简单描述
内部命令也就是shell自己带的命令
外部命令:有一个环境变量中的路径变量记录了路径的变量,这样你使用的这些命令,不用关心在哪个目录下面了,它都会从path变量里面去搜索。
Linux系统为了提高系统运行效率,将经常使用的轻量的命令在系统启动时一并加载这些命令到内存中供SHELL随时调用,这部分命令即为内部命令。反之,系统层调用的较重的命令只有当被调用时才会硬盘加载的这部分命令即为外部命令。
在系统的某个目录下的可执行程序,外部命令的查找依赖于变量path
[root@promote ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
输入命令以后,它就会从path变量里面去依次查找,
比如去PING一个网站
另外linux是区分大小写的,ping不能写成:PING,这样系统是不认识这个命令的。
而且是一直ping不像widows那样ping5个包就结束 了,此时我们要按ctrl C结束ping命令。
[root@promote ~]# cd /home //切换到/home文件目录下面
[root@promote home]# type cd //查看cd是哪个目录的命令
cd is a shell builtin //cd是一个shell 内部命令
[root@promote home]#
[root@promote home]# pwd//查看当前工作目录
/home //得到当前目录是/home
[root@promote home]# type pwd //通过命令type得知pwd是一个内部命令builtin
pwd is a shell builtin
[root@promote home]#
[root@promote home]# cd //切换到主目录
[root@promote ~]#
[root@promote ~]# type ping // type命令可以查看命令类型,以区别是内部命令还是外部命令。通过查看命令type可以得知ping是在/bin/这个目录下的命令,是外部命令
ping is hashed (/bin/ping)
[root@promote ~]#
[root@promote ~]# type ifconfig //通过查看命令type可以得知ipconfig是在/sbin/这个目录下的命令,是外部命令
ifconfig is hashed (/sbin/ifconfig)
[root@promote ~]#
使用help 查看内部命令帮助
[root@promote ~]# help cd
cd: cd [-L|-P] [dir]
Change the shell working directory.
Change the current directory to DIR. The default DIR is the value of the
HOME shell variable.
使用help查看外部命令,命令—help 或者 命令-h
[root@promote ~]# ifconfig –help
[root@promote ~]# ifconfig –h
都可以得到如下界面