• 什么是Shell
shell的概念
shell是一个命令解释器
echo $SHELL --通过环境变量
cat /etc/shells --查看当前注册至系统的shell
shell的切换
1、临时切换
# /bin/ksh
2、固定切换
# vim /etc/passwd--文件中的最后一个字段
# chsh -s /sbin/nologin username
# usermod -s /bin/bash username
子shell 打开关闭
# /bin/bash
# bin/ksh
forks--复制进程信息,继承父shell的定义
exec--通过exec开启子shell
为什么使用shell
解决重复操作的作业
节约时间,提高工作效率
功能强大
不需要编译
shell脚本的基本元素
#!
# --为注示
shell命令
流程控制(if/for/while/utile/case/function)
man BASH_BUILTINS
• shell的历史
• 常见的Shell
• Bourne Shell 最早出现的Shell的一种,大多数Unix的默认Shell,粗糙切缺乏任务控制
• nash-->initrd.img(init)
• not a shell , 它不是一个SHELL,是一个设计的尽可能小的简单命令解释器。主要用于初始化RAM DISK时候解释里面的linuxrc或者init这些简单的脚本
• csh
• 加州大学Berkeley分校作为其Unix实现的一部分而发展来的,目前最流行的交互式Shell。具有许多特性,比如任务控制、历史记录,但CShell不适合编写脚本,并有许多潜在的缺陷
• 臭名昭著的错误
• 用户不能进行文件描述符的处理
• 用户不能用任何恰当的方法将内部命令放在一起,通过管道也不可以
• 不可以将流控制和命令放在一起
• 某些命令看起来合理,可就是运行不了
• tcsh
• C shell的扩展版本,去除了C shell中臭名昭著的错误
• ksh
• Korn shell , 其与Bourne shell 兼容,并具备C shell的大部分特性,以及象历史编辑、重用旧命令并执行前编辑这些命令的能力。从对编程稳定性上它比csh可靠。
• bash
• Bourne-again shell, 由自由软件基金会开发,吸收了以上所有Shell好的特性,并被开源操作系统广泛使用