牛骨文教育服务平台(让学习变的简单)

简介

  shell是一个交互性命令解释器。
  shell独立于操作系统,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
这种设计让用户可以灵活选择适合自己的shell。shell让你在命令行键入命令,经过shell解释后传送给操作系统(内核)执行。
  shell是一个命令处理器(command processor)——是一个读入并解释你输入的命令的程序。除了是一个命令中断器以外,shell还是一个程序设计语言。你可以编写shell可以解释的程序(被称为源程序),这些源程序可以包含shell程序设计命令等等。shell除了解释命令以外,还有其他工作,它也可以配置和编程。
  shell拥有自己的语言允许用户编写程序并以一种复杂方式运行。shell编程语言具有许多常用的编程语言的特征,例如:循环和控制结构等。用户可以生成像其他应用程序一样复杂的shell程序。

种类

Shell种类众多,常见的有:
Bourne Again shell ( /bin/bash)
Bourne shell ( /usr/bin/sh或/bin/sh,Stephen Bourne,1979年)
Korn shell ( usr/bin/ksh,David Korn,80年代中期)
POSIX shell ( sh)
Shell for Root(/sbin/sh)
C shell (包括 /usr/bin/csh and tcsh,Bill Joy,70年代末期)
TENEX/TOPS C shell ( tcsh)
...

> 在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为#!/bin/bash。

#!告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序。

Linux Shell

  • 支持Bourne shell、C shell 和Korn Shell
  • 标准的shell为bash,即Bash是Linux系统默认的Shell(GNU Bourne Again Shell)
    • Bourne shell向下兼容
    • 作业控制 (job control)
    • 别名功能 (aliases)
    • 命令历史 (command history)
    • 命令行编辑功能
    • 自定义功能键
    • 提供更丰富的变量类型、命令与控制结构

shell功能

以下是shell功能的一个汇总:
查找命令的位置并且执行相关联的程序;
为shell变量赋新值;
执行命令替代;
处理 I/O重定向和管道功能;
提供一个解释性的编程语言界面,包括tests、branches和loops等语句。

当你在命令行中敲入bash命令时,相当于进入bash环境,如果本身就是bash环境,那么就是进入一个子bash环境(相当于开了一个子进程)。

参考:http://bbs.chinaunix.net/thread-2325808-1-1.html