1、什么是shell
Linux严格意义上是一个操作系统,我们称为内核,但我们一般的用户是不能直接使用内核的,而是通过外壳程序——也就是shell。
对比Windows,图形界面就是外壳程序。Linux,shell就是外壳程序。
shell充当一个桥梁:
a.将使⽤者的命令翻译给核⼼(kernel)处理。
b. 同时,将核⼼的处理结果翻译给使⽤者。
1> 简单讲,其实shell就是逐条执行命令,在终端执行的命令都是一条一条敲上去,再执行的,
shell脚本就是事先写很多命令,然后执行脚本,让shell一次性将这些命令执行完。
2> shell脚本和编程语言相似,也有变量和流程控制语句,但shell脚本是解释执行的,不需要编译,shell程序从脚本中一条一条读取并执行这些命令。
2、shell如何启动
shell在你成功地登录进入系统后自动启动,并始终作为你与系统内核的交互手段直至你退出系统。
**你系统上的每位用户都有一个缺省的shell。**每个用户的缺省shell在系统里的/etc/passwd文件里被指定。
3、shell运行原理
我们在Linux输入的命令是有区别的,具体来说,分为内部命令(built-in)以及外部命令。
像ls,mkdir这些都属于外部命令,而echo,cd,pwd这些都属于内置命令,
如何区分这些命令是否是内置,外部命令,可以利用type命令来辨别。
内外部命令的区别是什么呢:
1、像cd,pwd这些内置命令是属于Shell的一部分,当Shell一运行起来就随Shell加载入内存,因此,当我们在命令行上输入这些命令就可以像调用函数一样直接使用,效率非常高。
2、而如ls,cat这些外部命令却不是如此,当我们在命令行输入cat,当前的Shell会fork一个子进程,然后调用exec载入这个命令的可执行文件,比如bin/cat,因此效率上稍微低了点。
shell脚本的运行原理:
我们编写一个Shell脚本bash.sh,比如:
cd code
echo "hello guys!"
echo "welcome to my Blog:linuxboy.org!!"
执行脚本bash.sh:
shell对输入的命令的分析:
1、首先,检查用户输入的命令是否是内部命令,如果不是在检查是否是一个应用程序;
2、shell在搜索路径或者环境变量中寻找这些应用程序;
3、如果键入命令不是一个内部命令并且没有在搜索路径中查找到可执行文件,那么将会显示一条错误信息;
4、如果能够成功找到可执行文件,那么该内部命令或者应用程序将会被分解为系统调用传给Linux内核,然后内核在完成相应的工作;
参考自https://blog.youkuaiyun.com/m0_37925202/article/details/80258974