什么是Shell? bash是干啥的?  有什么关系


       shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序。你在提示符下输入的每个命令都由shell先解释然后传给Linux内核。 


       shell 是一个命令语言解释器(command-language interpreter)。拥有自己内建的 shell 命令集。此外,shell也能被系统中其他有效的Linux 实用程序和应用程序(utilities and application programs)所调用。


       不论何时你键入一个命令,它都被Linux shell所解释。一些命令,比如打印当前工作目录命令(pwd),是包含在Linux bash内部的(就象DOS的内部命令)。其他命令,比如拷贝命令(cp)和移动命令(rm),是存在于文件系统中某个目录下的单独的程序。


       而对用户来说,你不知道(或者可能不关心)一个命令是建立在shell内部还是一个单独的程序。 shell 首先检查命令是否是内部命令,不是的话再检查是否是一个应用程序,这里的应用程序可以是Linux本身的实用程序,比如ls 和 rm,也可以是购买的商业程序,比如 xv,或者是公用软件(public domain software),就象 ghostview。然后shell试着在搜索路径($PATH)里寻找这些应用程序。搜索路径是一个能找到可执行程序的目录列表。如果你键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。而如果命令被成功的找到的话,shell的内部命令或应用程序将被分解为系统调用并传给Linux内核。 


       shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell 程序设计语言支持在高级语言里所能见到的绝大多数程序控制结构,比如循环,函数,变量和数组。shell 编程语言很易学,并且一旦掌握后它将成为你的得力工具。任何在提示符下能键入的命令也能放到一个可执行的shell程序里,这意味着用shell语言能简单地重复执行某一任务。


     bash是shell的一种,具有友好的交互界面、更容易操作、更方便使用者,命令补齐功能:通常你在 bash (或任何其他的 shell)下输入命令时,你不必把命令输全 shell 就能判断出你所要输入的命令。 bash 另一个使命令输入变得更简单的方法是在命令中使用通配符。bash 支持三种通配符:

* 匹配任何字符和任何数目的字符

?匹配任何单字符

【...】 匹配任何包含在括号里的单字符


       bash 也支持命令历史记录, bash 把你先前输入的命令文本保存在一个历史列表中。当你用你的帐号登录后历史列表将根据一个历史文件被初始化历史文件的缺省名字是 .bash_history这个文件通常在你的用户目录($HOME)中。用户在命令提示符下,可通过上、下箭头翻看历史命令。bash还支持输入、输出重定向,管道等简单方便使用。

   

      好了,李小胖就说这么多,也是总结外加个人理解,希望对初学者有所帮助!