shell的定义
Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。shell是人与内核交互的程序接口,人通过程序接口发出指令,通知内核kernel,让硬件进行作业。
Shell执行命令的方式
- 交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条。
- 批处理(Batch):用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。
shell的种类
- /bin/sh:sh 由Steve Bourne开发,是Bourne Shell的缩写,sh 是Unix 标准默认的shell。
- /bin/bash:bash由Brian Fox和Chet Ramey共同完成,是Bourne Again Shell的缩写,是Linux标准默认的shell。它基于Bourne shell,吸收了C shell和Korn shell的一些特性。bash完全兼容sh,也就是说,用sh写的脚本可以不加修改的在bash中执行。
- /bin/ash:ash shell 是由Kenneth Almquist编写的,Linux中占用系统资源最少的一个小shell,它只包含24个内部命令。
- /bin/tcsh:csh是Linux比较大的内核,它由以William Joy为代表的共计47位作者编成,共有52个内部命令。
- /bin/ksh:ksh 是Korn shell的缩写,由Eric Gisin编写,共有42条内部命令。该shell最大的优点是几乎和商业发行版的ksh完全兼容,这样就可以在不用花钱购买商业版本的情况下尝试商业版本的性能了。
/bin/bash的简介
大多数linux系统默认使用的就是/bin/bash这个shell。
功能简介:
- 命令记忆功能
登陆后,输入的命令暂时记录再内存中,当关机后,存储在当前用户主目录的.bash_history。最多能记录1000条命令。
注:只有当正常退出当前shell时,在当前shell中运行的命令才会保存至.bash_history文件中