当前位置:   article > 正文

linux之什么是shell以及shell如何解析命令_如何对内置命令进行解析

如何对内置命令进行解析

Shell是什么

Shell是命令解释器,它负责执行和解析输入的命令。

相当于一个对象,当终端等待用户输入命令,解析执行命令,反馈给用用户结果。

既然shell只是一个解释器,那么shell就有很多种,查看当前的shell类型 

[root@loaclhost ~]# echo $SHELL

/bin/bash

Shell是如何解析执行一个“字符串”

Linux终端中,输入一行“字符串”shell会检查这个字符串是否是内部命令,如果是内部命令,直接执行,如果不是内部命令,就去外部命令的存放路径找一下,查看是否有对应的可执行文件。

Shell内置的命令叫做内部命令,在用户登录的时候进行初始化到内存中的命令,在硬盘的指定路径存放的二进制可执行文件叫做外部命令。

那么如何判断一个命令是内部命令还是外部命令呢?

[root@loaclhost ~]# type hostname

hostname is /bin/hostname

[root@loaclhost ~]# type uname

uname is /bin/uname

[root@loaclhost ~]# type echo

echo is a shell builtin

Shell中的外部命令是存放在固定的路径,$PATH这个变量就是存放着的外部命令二进制文件的存放路径,在寻找外部命令的时候,会一个路径一个路径的找,找到以后就结束查找

[root@loaclhost ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

因此在终端输入一个字符串的时候,只要在$PATH路径项下有指定的二进制文件名称即可,并不一定非要是一个常规的命令

[root@CentOS8 data]# type hostname
hostname is hashed (/usr/bin/hostname)
[root@CentOS8 data]# cp /usr/bin/hostname /usr/bin/hostname_back
[root@CentOS8 data]# ls -lrt /usr/bin/hostname*
-rwxr-xr-x. 1 root root 21664 May 11  2019 /usr/bin/hostname
-rwxr-xr-x. 1 root root 21344 Mar 17 03:43 /usr/bin/hostnamectl
-rwxr-xr-x. 1 root root 21664 Aug 13 08:53 /usr/bin/hostname_b
-rwxr-xr-x. 1 root root 21664 Aug 13 08:58 /usr/bin/hostname_back
[root@CentOS8 data]# hostname_back
CentOS8
[root@CentOS8 data]# hostname
CentOS8 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/147821
推荐阅读
相关标签
  

闽ICP备14008679号