Shell的发展和分类:
Bsh―――20世纪70年代中期―――新泽西的AT&T贝尔实验室
Csh―――20世纪80年代早期―――加利福尼亚――C语言风格
Ksh―――AT&T贝尔实验室―――结合了bsh和csh的功能优势。
Bash――-Bash是Bsh的升级替代产品,在目前大多数linux的发行版本都使用Bash作为默认
的shell,运行shell程序时,系统实际上运行的是Bash程序。
1、RHEL4中提供的Shell
/etc/shells 这个文件夹中记录了当前linux系统中能够使用的所有shell。
Example:
$ cat /etc/shells
$ ls –l `cat /etc/shells ` 详细显示shell文件夹内容。
2、shell程序的切换
3、用户默认shell的设定与shell的修改
$ cat /etc/passwd 使用vi编辑器对用户默认shell的修改。
例:
$ grep teacher /etc/passwd 察看teacher用户在passwd中的信息。
teacher:x:500:500:---------------/bin/bash /bin/bash是启动时的默认shell。
$ chsh 修改shell命令。
passwd: 输入管理员密码。
new shell[etc/bash]:/bin/bsh 输入需要修改的shell。
chsh命令是通过修改passwd文件中的用户登录shell字段来实现用户登录shell更改的。可以通过vi
编辑器来进行快速修改。(vi编辑器的使用详见第3章)
Bash的主要功能:
SHELL变量:
×环境变量
×预定义变量
×位置变量
×用户自定义变量
环境变量:
1、查看环境变量:
环境变量是用户登录时linux为用户预先设定好的一类shell变量。
$ set 察看环境变量。
$ set | head -3 察看前3行内容。
$ set | tail -3 察看后3行内容。
$ set | more 分页察看内容。
2、常用环境变量介绍:
$echo $USER 显示用户名。
$echo $UID 显示用户的uid。
$echo $SHELL 显示当前用户登录的shell。
$echo $HOME 显示当前用户的宿主目录。
$echo $PWD 显示用户当前所在的目录。
$echo $PATH 显示用户的命令搜索路径。
$echo $PS1 显示用户的主提示符。
$echo $PS2 显示用户当前的辅助提示符。
3、全局环境变量配置文件
$ ls –l /etc/bashrc /etc/profile
/etc/profile 文件负责设置全局的环境变量,并应用于所有的用户登陆shell。
/etc/bashrc 文件用于定义全局的函数和别名,文件的内容除了为系统中所有登录用户
提供设置外,也适用于非交互shell和非登陆shell。
4. 用户环境变量配置文件
/用户宿主目录/.bash_profile和.bashrc用户变量配置文件位于用户的宿主目录中,文件名是:.bash_profile和.bashrc
用户可以通过修改这两个文件来更改自己的环境变量。
/etc/skel 目录中保存了初始的用户配置文件模板,当用户对自己的配置文件进行了
错误的设置后,可以直接将/etc/skel目录中的模板文件复制到用户目录,
从而恢复到正确的初始配置。
位置变量:
预定义变量:
预定义变量是linux系统中已定义好的变量,用户只能使用预定义变量,而不能创建或赋值预定义变量。
所有的预定义变量都是由$和另一个符号组成的,常用的shell预定义变量有:
$#:表示位置参数的数量
$*:表示所有位置参数的内容
$?:表示命令执行后返回的状态
$$:表示当前进程的进程号
$!表示后台运行的最后一个进程号
$0:表示当前执行的进程名
用户自定义变量:
1、自定义变量的设置:
变量名=变量值
$DAY=sunday 左边的DAY是被赐值的变量名,右边sunday是为变量所赐的值。
2、自定义变量的查看与引用:
example:
$DAY=sunday 将sunday值赐予DAY。
$echo $DAY 察看$DAY的赐值。
sunday
$set | grep DAY 使用字符查找功能查找set命令显示中的DAY字符。
DAY=sunday
注:set命令可以显示系统中所有的变量,也包括用户自定义变量。
3、自定义变量的输出:
用户在当前shell中定义了某个变量后,只能在当前的shell中使用,而在当前shell的子shell中是无效的。
example:
$DAY=sunday
$echo $DAY
sunday
$bash
$echo $DAY
(无显示变量值)
为了在用户的子shell或脚本程序中使用自定义变量,需要将用户自定义的变量“输出 ”为全局变量。
Export 命令用于输出变量为全局变量:
export [-nf ] [name=[value]……]
example:
$echo $DAY 察看变量值。
sunday 所显示的变量值。
$export DAY export命令使用变量名作为参数,输出指定名称的变量为全局变量。
$bash 进入子shell。
$echo $DAY 察看变量值。
sunday 所显示的变量值。
$exit 推出。
export命令可以在输出变量的同时对指定名称的变量进行赋值
$export DAY=sunday MONTH=jan 对指定的多个名称的变量赋值(新建)。
$echo $DAY $MONTH 同时察看多个变量值。
sunday jan 所显示的变量值。
4、自定义变量的清除:
unset[-f][-v][name...] unset命令使用变量的名字作为命令参数。
$ echo $DAY 察看变量值。
$ sunday 所显示的变量值。
$ unset DAY 取消变量值(清除)。
$ echo $DAY 察看变量值。
$ 显