Shell程序充当了一个命令解释器的角色。 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 察看变量值。 $ 显