问题1:shell和操作系统之间什么关系?
答:shell是我们和操作系统交流的接口。当我们没有鼠标,没有图像界面。又想去操作操作系统的时候,我们就可以用shell去和操作系统去交流。它本质上是一个应用程序,这个应用程序能接收键盘的输入,并且把操作系统的运行结果通过显示器返回给我们。
这个是shell在操作系统中的位置所在。
问题2:shell既然是一个程序,那么shell脚本又是怎么回事?
答:shell虽然是一个程序,但是这个程序是一个解释器程序。它能解释已.sh为结尾的文件。把内容翻译成对应的命令发给操作系统。
问题3:shell脚本和cd,ls 命令什么关系?为什么shell脚本中可以包含这些命令?
答:我们之前已经说过了shell其实是一个解释器程序,而这个解释器程序提供了一些内置命令,我们可以拿过来直接用,还有就是一下外部程序命令(装系统时候就带的,或后来安装的)。shell解释器程序都可以读取识别,并且告诉操作系统去执行,区别就是内置命令是随shell开机启动之后一直存在的,外部命令需要操作系统从硬盘中帮助去调入到内存中。
问题4:命令的执行流程介绍?
答:其实操作系统开机运行之后,就已经运行了一个对应shell程序,当我们从键盘输入之后,shell程序会读取一串字符串并判断是否内建命令,如果是直接调用内存数据执行,如果不是传递操作系统,操作系统会先fork复制一个shell进程,然后找到对应的程序看是否是二进制程序,如果是用新程序取代shell程序运行。如果不是那么shell进程会读取翻译这个文件(这个文件一般为shell脚本文件或python脚本文件)。
问题5:什么是环境变量?
答:环境变量一般指操作系统运行时候需要用到的一些环境参数,而操作系统的运行单位是进程,所以正在运行的进程都有自己的环境变量。而进程的环境变量一般从父类继承来的,最开始的进程是从某一个配置文件中读取的。例如linux中/etc/profile,我们也可以在运行中的进程动态的添加环境变量,这样后续的子进程就可以直接用环境变量了。当进程结束后,动态添加的环境变量也就失去作用效果了。动态添加的方法就是用关键字export。如果需要永久在所有进程中启作用还是需要在一个操作系统制定的配置文件中。
问题6:能介绍一下shell中变量么?当涉及一个脚本调用另一个脚本的时候。变量总是用不好。
答:对于这里我想让您分两方面去理解。
第1方面:就是shell中的变量就是一串字符串,shell中一切皆字符。然后这个字符串中的内部结构是标识名称=值。
第2方面:shell脚本中变量分为3类:
第1类:局部变量:作用域是函数内。用local声明。
第2类:全局变量:作用域为当前shell进程。跨shell进程不能访问,用source引入当前进程能够使用。
第3类:环境变量:作用域父子进程。这个上个问题已经详细回答了。
问题7:shell脚本具体由那几部分组成,我们应该如何去学习?
答:上面该回答的内容已经介绍的差不多了。对于shell语言来说,只包含变量,函数,流程控制语句几部分,加上shell的内部命令。我们就可以编写能够实现各种功能的脚本文件了。
网友评论