linux shell(一)

讲linux shell,从广义来看是linux kernel外的一个应用程序,为了避免普通用户直接操作内核,提供了这么一个“壳”,它提供了一种类似于桥梁的作用,把用户输入的各种各样的命令,如文件管理,磁盘管理,网络管理等的命令,转化成内核可以理解和操作的内容。狭义来讲shell可以把它看做是一门编程语言,通常来讲编程语言分为2类一类是编译型的语言,一类是解释型的语言。c,c++就是编译型的语言,而python和shell就是解释型的语言,也可以叫做脚本语言。编译型的语言执行快,但需要把源码转化为二进制文件执行,而解释型的语言,更为灵活,跨平台性好可以去做一些小工具之类的东西。

做个不恰当的比喻,从某个角度来看(当然可以说是错误的角度):
windows---- dos----bat
linux----shell----shell脚本

学习shell需要去了解一些linux unix等的发展历史。并且了解发展过程中出现的软件自由基金会,GNU,GPL,LGPL等。
linux准确来说是一个内核,是芬兰大神linus在unix和minix的基础上开发出来一种新内核,而我们现在所说的linux,更多是把linux内核和GNU的一些常用软件结合在一起的linux 操作系统。而这些GNU里面的软件就有gcc,bash shell这样的常见软件。

unix 3大shell
bourne shell :AT&T
C shell :Berkeley
korn shell:AT&T
linux常用的shell
bourne again shell
TC shell

我们也可以通过 /etc/shells查看系统支持的shell
经常使用debian系 ubuntu一类的朋友需要关注dash和bash的差别

dash是精简的bash,执行更快,但功能会少一些,一些bash支持的语句在dash下就会报错,如let i++, ehco -n ‘xxxx’的option n就无法识别等等。
如果觉得dash不好就改一下/bin/sh的链接就好了。或者用bash去执行脚本。

shell执行的过程
(1)读取输入并解析命令行
(2)给特殊字符赋值
(3)建立管道、重新定向和后台进程
(4)处理信号
(5)建立可执行程序

系统启动和登录shell
/bin/login
/etc/passwd
涉及到的系统调用
fork exec wait exit

shell下执行一般分类2类情况
一类是内建命令,不会fork新进程
一类是外部命令,要么是可执行程序,要么是脚本,会fork新进程
内建命令的执行会影响当前shell(父shell)的状态,而执行外部命令则不会影响父shell的状态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值