手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

笨兔兔的故事——带你了解Ubuntu,了解Linux

shell

[日期:2010-12-23] 来源:Ubuntu社区  作者: 懒蜗牛Gentoo [字体: ]
(90) shell
   说起编程,编程就得有语言。语言有很多种,可以分成两类:编译型和解释型。编译型就是像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系统中。linux
【内容导航】
第1页:开端 第2页:醒来
第3页:工作 第4页:历史
第5页:也是历史 第6页:还是历史
第7页:串门 第8页:碎片
第9页:邻居 第10页:人才
第11页:来头 第12页:本事
第13页:开源 第14页:故事
第15页:minix 第16页:(16) linux
第17页:Friends 第18页:杀毒
第19页:免疫 第20页:权利
第21页:内存 第22页:内存
第23页:信封 第24页:
第25页:酒 too 第26页: 酒Again
第27页:Year 第28页:人物志
第29页:日志 第30页:XFS
第31页:分区 第32页:挂载
第33页:GIMP 第34页:QQ
第35页:运算 第36页:
第37页:协作 第38页: 加速
第39页:OpenGL 第40页:Power On
第41页:init 第42页:EXT4
第43页:有朋远来 第44页:他乡故知
第45页:可视电话 第46页:磁盘
第47页:硬解 第48页:刻录
第49页: Rubbish 第50页:Bug
第51页:施工 第52页:规划
第53页:因地制宜 第54页:Richard
第55页:Stallman 第56页:进程
第57页:僵尸 第58页:State
第59页:毕加索 第60页: 对决
第61页:空间 第62页:VBox
第63页: 动物园 第64页:BT
第65页: tar包 第66页:编译安装
第67页:对话 第68页:聊天记录
第69页:LOSE 第70页:宏&微
第71页:无线网卡 第72页: 驱动
第73页:显卡驱动 第74页:SLax
第75页:备份 第76页:浮云
第77页:文件类型 第78页:fedora
第79页:RPM 第80页:(80) 爱丽恩
第81页:用户认证 第82页:不知道起啥名字了……
第83页: 第84页:权限
第85页:多用户 第86页:比武
第87页:间歇 第88页:(88) 舌战
第89页:了断 第90页:shell
第91页:乱七八糟 第92页:文泉驿
第93页:dropbox 第94页:
第95页:地址 第96页:绕路
第97页:邮局 第98页:端口
第99页:云山雾罩 第100页:记忆
第101页:浏览器的战争 第102页:狐狸出世
第103页:群雄并起 第104页:门派
第105页:任天堂 第106页:敲敲打打本正理,补补全全是便捷
第107页:往事如烟千般忆,一令似关万物分 第108页:片片云烟过眼 页页细审在目
第109页:众里寻他千百度 第110页:山高无路阻佳音,途中逢友传鸿雁
第111页:笔走龙蛇书妙体,顿开金锁走蛟龙 第112页:小熊猫下小熊猫,游戏者装游戏者
第113页:忠勇智计三千人,三千宠爱在一身 第114页:一寸光阴一寸金 寸金难买寸光阴
第115页: 集腋成裘,拼小为大 第116页:容量速度和安全,阵列级别零一五
第117页:喜得广厦千万间,挂载之后方欢颜 第118页:硬盘扩建无忧虑 文件共享有三八
第119页:通讯靠吼 第120页:认证张口
第121页:SMB初具规模 NFS虎视眈眈 第122页:某年某月某日 某时某分某秒
第123页: 长江后浪推前浪,一代新兔胜旧兔 第124页:伤情最是晚凉天,升级坎坷不堪言
第125页: 惨淡天空,又见光明 第126页:三个和尚没水喝,两个内核没图形
第127页:为体验换装KDE,要易用开发新界面 第128页:我不知道叫什么题目好了
第129页:人生自古谁无死 留洒芳香满内存
相关资讯       Ubuntu Linux 
本文评论   查看全部评论 (12)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
第 12 楼
* 匿名 发表于 2018/2/19 0:02:32
嗨,真想做个笨兔兔,陪在懒蜗牛身边,.😇
第 11 楼
* 匿名 发表于 2017/4/16 13:43:37
和俱
第 10 楼
* Aaron_Peng会员 发表于 2015/1/28 12:09:59
很不错,推荐给小白看看
回复 支持 (24) 反对 (26)
第 9 楼
* 匿名 发表于 2013/1/23 18:03:37
花了4天去看完,前面有些历史知识,还有些软件的原理,值得去看一下。后面十几章,我就粗略的带过了。显得有些臃肿,啰嗦,价值没有前面几章大。
回复 支持 (29) 反对 (32)
第 8 楼
* Jarod 发表于 2012/8/1 9:42:19
实在太精彩了!我留了份,哈哈
回复 支持 (38) 反对 (37)