ORACLE中文解决问答
前言
本文译自《Slackware Linux Unleashed》(第三版)一书的 bash 一章,但做了一些必要的删节,并且有的地方根据实际情况作了较大的改动,必要的话请参考原文。
简介
本文将较为详细地介绍 Linux 下最常用的 shell,bash。bash(Bourne Again Shell) 是 Linux 的缺省 shell,并被大多数用户所使用,在本文中你将学会:
什么是shell
Linux上最常见的shell
命令补齐(Command-line completion)和通配
命令历史记录(Command history)和别名
重定向和管道
改变提示符
进程控制(Job control)
如何用户化配置你的bash shell
另外你还将看到一些最常用的bash命令和内存变量的用法,读完本文后你将能更快和更有效地使用bash。
Shells in a Nutshell
什么是shell?总之这个词好象总是出现在 Linux 里,但很多新用户并不清楚它的明确的含义。本节将给出一个确切的解释并说明为什么在Linux中它显得如此的重要。
什么是Shell?
shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序。你在提示符下输入的每个命令都由shell先解释然后传给Linux内核。
--------------------------------------------------------------------------------
注意: 如果你熟悉m$-dos,你将认出这很象DOS 用户和 COMMAND.COM之间的关系。唯
一的区别是command.com 的功能远不能和shell 相提并论。
--------------------------------------------------------------------------------
shell 是一个命令语言解释器(command-language interpreter)。拥有自己内建的 shell 命令集。此外,shell也能被系统中其他有效的Linux 实用程序和应用程序(utilities and application programs)所调用。
不论何时你键入一个命令,它都被Linux shell所解释。一些命令,比如打印当前工作目录命令(pwd),是包含在Linux bash内部的(就象DOS的内部命令)。其他命令,比如拷贝命令(cp)和移动命令(rm),是存在于文件系统中某个目录下的单独的程序。而对用户来说,你不知道(或者可能不关心)一个命令是建立在shell内部还是一个单独的程序。
附图展示了 shell 是如何执行命令解释的,shell 首先检查命令是否是内部命令,不是的话再检查是否是一个应用程序,这里的应用程序可以是Linux本身的实用程序,比如ls 和 rm,也可以是购买的商业程序,比如 xv,或者是公用软件(public domain software),就象 ghostview。然后shell试着在搜索路径里寻找这些应用程序。搜索路径是一个能找到可执行程序的目录列表。如果你键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。而如果命令被成功的找到的话,shell的内部命令或应用程序将被分解为系统调用并传给Linux内核。
shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell 程序设计语言支持在高级语言里所能见到的绝大多数程序控制结构,比如循环,函数,变量和数组。shell 编程语言很易学,并且一旦掌握后它将成为你的得力工具。任何在提示符下能键入的命令也能放到一个可执行的shell程序里,这意味着用shell语言能简单地重复执行某一任务。
shell 如何启动
shell在你成功地登录进入系统后启动,并始终作为你与系统内核的交互手段直至你退出系统。你系统上的每位用户都有一个缺省的shell。每个用户的缺省shell在系统里的passwd文件里被指定,该文件的路径是/etc/passwd。passwd文件里还包含有其他东西:每个人的用户ID号,一个口令加密后的拷贝和用户登录后立即执行的程序,(注:为了加强安全性,现在的系统一般都把加密的口令放在另一个文件--shadow中,而passwd中存放口令的部分以一个x字符代替)虽然没有严格规定这个程序必须是某个Linux shell,但大多数情况下都如此。
发布人:Crystal 来自: