linux之什么是shell以及shell如何解析命令 |
您所在的位置:网站首页 › shell程序由什么组成 › 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 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |