找回密码
 骑士注册

QQ登录

微博登录

搜索
❏ 站外平台:

查看: 2277|回复: 0
收起左侧

笨兔兔的故事--了解Linux Shell

[复制链接]
7th 发表于 2013-03-19 22:19:17 | 显示全部楼层 |阅读模式

      说起编程,编程就得有语言。语言有很多种,可以分成两类:编译型和解释型。编译型就是像C语言那样,用C语言写出来的源代码就像图纸,前面说过了,需要GCC施工队来把图纸变成真正能够运行的程序。解释型语言就不需要施工队了,解释型的语言写出来的代码不是一份图纸,倒像是一份任务清单,上面用某种语言写明先做什么,后做什么,最后做什么。写好之后保存成一个脚本文件,随便起个名字,然后赋予可执行权限,就可以直接执行了。有的人怀疑,这个文件写出来就是一个文本嘛,又不是一个程序,他怎么会自己跑到内存里去执行?问的好,脚本文件当然不可能自己跑到内存里运行,除非是闹鬼了。解释型的语言既然是一份任务清单,那么就得有一个可以照着这个列表执行命令的家伙,我们管这个角色叫做解释器。
  
   比如我们说的shell编程,shell有很多种,我这里默认的shell是bash,他就是shell脚本程序的一个解释器。主人随便建一个文件,里面写上:
   echo “Hello World!”
   然后保存成ttttt文件,赋予可执行权限,然后运行./ttttt。这时候,首先,我会判断这个文件可执行,并且是个一文本文件,那么说明这是个脚本,是个解释型语言的脚本。然后根据当前系统的设置,找到默认的shell,比如我这里默认的shell是bash,于是我叫醒bash,把这个脚本交个他,让他去执行。那如果不想用默认的shell呢?那就在脚本文件的第一行明确写明要用什么shell执行。格式类似这样“#!/bin/bash”,记住,这行必须写在脚本的最开头,这个好理解吧。总不能我打开了这个脚本,叫来了默认的bash执行了一半了,才发现您在中间写着一行:#!/bin/csh,这时候才知道脚本应该叫c shell来执行,你这不捣乱么。所以,一定要在脚本的最开始搞清楚这个脚本是用于哪个shell的。
  
   shell有很多种,比如Bourne Again Shell,C Shell, K Shell,Debian Almquist SHell等等。我们Linux最常用的就是Bourne Again Shell,也就是BASH。关于这个shell的历史,这怕是要追溯倒Unix的年代……
   
   那个时候,最初的UNIX系统的shell,是那个研究铃铛(Bell)的实验室里的一个叫做Ken Thompson发明的,叫做Thompson shell。这个shell是一个很简单的程序,它不过是作为UNIX系统的用户接口而已。(就像现在bash作为linunx系统的命令行接口。用户输入的命令都是由bash来解释和执行的。)那时候的Thompson shell顶多是可以把几条命令一起写在一个文件里来执行,类似批处理,没有流控制,没有变量,没有函数,所以还完全谈不上shell编程。后来觉得有必要加入一些条件判断阿,跳转阿之类的功能,就依靠外部命令实现了。与此同时,铃铛实验室的另一个牛人,Steve Bourne,也设计了一个shell,叫做Bourne shell。(他们都生怕别人不知道程序是谁写的,都以自己的名字命名)这个shell就强大些了,有了基本的流控制源语,if else之类的。这俩人都力挺自己设计的shell,渐渐的两种shell有了各自的追随者。有觉得这个简洁的,有觉得那个好用的。有道是一山不容二虎,到了1970年代末,打起来咯~ 由于两个shell互相不兼容,而一个和平统一的UNIX弄两套shell是不大合适的,(大概是因为那时候他们没有好好学习一国两制的理论)所以必须确定一个UNIX 的标准shell。于是,一场旷日持久的战斗打响了,两派相互争论各自shell的优缺点,您看见K派跟G帮怎么吵架的了么?估计他们也差不多。最终,以Bourne shell的胜出结束,Bourne shell作为默认的shell出现在UNIX 第7版系统中,其二进制程序被命名为sh放在了/bin。直到现在,linux发行版中依然都存在着/bin/sh这个文件,不过现在这个sh一般都只是个链接了,链接倒默认的shell。
  
   那bash呢?那是1987年,一个叫做Brian Fox的家伙(狐狸大脑?汗-_-b)创作的,这个shell兼容Bourne shell,算是对Bourne shell的改进版,于是叫做Bourne Again Shell,简称Bash。这个shell成为了GNU计划默认shell,应用在绝大多数的类UNIX系统中。

 

您需要登录后才可以回帖 登录

本版积分规则

快速回复 返回顶部 返回列表

分享到微信

打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。