linux之什么是shell以及shell如何解析命令

您所在的位置:网站首页 shell程序由什么组成 linux之什么是shell以及shell如何解析命令

linux之什么是shell以及shell如何解析命令

2024-07-10 23:40| 来源: 网络整理| 查看: 265

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