- 论坛徽章:
- 0
|
前言:
在网上发现了这本书,看着挺舒服的.
开始:
1.shell的类型
就像一个人会知道不同的语言和方言一样,你的UNIX系统通常提供多种shell类型:
sh 或者称作 Bourne Shell: 最初的shell并且仍然在UNIX系统和UNIX相关系统中使用。它是基本的shell,是一个特性不多的小程序。虽然不是一个标准的shell,但是为了UNIX程序的兼容性在每个Linux系统上仍然存在。
bash 或者称作 Bourne Again shell: 标准的GNU shell,直观而又灵活。或许是初学者的最明智选择同时对高级和专业用户来说也是一个强有力的工具。在Linux上,bash 是普通用户的标准shell。这个shell因此称为Bourne shell的超集,一套附件和插件。意味着bash和sh是兼容的:在sh中可以工作的命令,在bash中也能工作,反之则不然。本书所有的例子和练习均使用bash。
csh 或者称作 C shell: 语法了类似于C语言,某些时候程序员会使用。
tcsh 或者称作 Turbo C shell: 普通C shell的超集,加强了的用户友好度和速度。
ksh 或者称作 Korn shell: 某些时候被有UNIX背景的人所赏识。Bourne shell的一个超集,有着对初学者来说就是一场恶梦的标准配置。
文件 /etc/shells 给出了Linux系统上所有的已知shell的概览
默认的shell设置在 /etc/passwd 文件中如
mia:L2NOfqdlPrHwE:504:504:Mia Maya:/home/mia:/bin/bash
要从一个shell转换到另外一个,只要在活动的终端里输入新shell的的名字
查看当前用的shell: echo $SHELL
2. Bash 启动文件
2.1 以交互登陆shell调用,或者使用'--login'
读取的文件:
/etc/profile
~/.bash_profile, ~/.bash_login or ~/.profile: 读取第一个存在的可读取的文件
~/.bash_logout 登出的时候。
错误消息将会显示如果配置文件存在但是不能读取.用户文件会覆盖系统文件。
2.2 以一个交互非登陆shell调用
读取的文件:
~/.bashrc
此文件通常指向 ~/.bash_profile
2.3 非交互调用
所有脚本使用非交互shell。他们是被编制出来完成特定任务且不能完成其他工作。
读取的文件:
由变量 BASH_ENV定义
PATH 不是用来搜索文件的,所以如果你想使用它,最好给出全部路径名和文件名来。
2.4 远程调用
以 rshd调用时读取的文件: //比如ssh
~/.bashrc
2.5 当UID不等于EUID时候调用
此种方式无起始文件读取。
3. 交互shell
3.1 这个shell是交互的吗?
以察看特殊参数 - 的内容来测试,当shell是交互时包含了一个'i':
eddy:~> echo $-
himBH
在非交互shell中,提示,PS1,是没有设置的
4. 执行命令
4.1 外部程序:
程序运行的时候,Bash创建一个自身的拷贝因此一个新的进程就被创建。子进程和父进程拥有一样的环境,唯一个区别只有进程号。这个过程被称作内核空间创建进程 forking。在内核空间创建进程后,子进程的地址空间被新进程数据覆盖。此步骤通过 exec 系统调用完成。
4.2 Shell内建命令
内建的命令包含在shell本身里面。当内建的命令的名字被用作一个简单命令的第一个词时,shell 直接执行那个命令,而不创建新的进程。内建命令在实现那些单独的程序不可能或者不便实现的某些功能时时很有必要的
bash支持3种内建的命令:
Bourne Shell内建命令:
:, ., break, cd, continue, eval, exec, exit, export, getopts, hash, pwd, readonly, return, set, shift, test, [, times, trap, umask and unset.
Bash内建命令:
alias, bind, builtin, command, declare, echo, enable, help, let, local, logout, printf, read, shopt, type, typeset, ulimit and unalias.
特殊内建命令:
当Bash在POSIX模式运行,特殊内建命令和其他内建命令有3个方面的区别:
特殊内建命令在shell函数在命令查找期间先被找到。
如果一个特殊内建命令返回一个错误状态,一个非交互shell就会退出。
在命令完成后在该命令之前的赋值语句仍然在shell环境中起作用。
POSIX特殊内建命令是::, ., break, continue, eval, exec, exit, export, readonly, return, set, shift, trap and unset.
4.3 从脚本中运行程序
当程序被一个脚本来执行,bash会使用 fork 创建一个新的bash进程。这个子shell一次从shell脚本中读取一行。每行的命令如果直接来自键盘的话会被读取,解释和执行
当子shell处理脚本中的每一行时,父进程等待子进程结束。当运行完shell脚本中每一行时,子shell就结束。父shell苏醒并且显示一个新的提示符。
地址:
Bash新手指南
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/11171/showart_309886.html |
|