12.3 使用新版本的Bash Shell
虽然最新版的bash已经安装到系统中,但是还需要经过一些设置才能使用。首先需要将最新的bash的路径写到etcshells中,以向系统注册新Shell的路径。可以采取直接编辑etcshells文件的方式,或者采用如下更简单的方式:
- [root@localhost ~]# echo "usrlocal/bash4.2binbash" >> etcshells
然后使用命令chsh(change shell的简写)修改登录Shell。
- [root@localhost ~]# chsh
Changing shell for root.
New shell [binbash]: usrlocal/bash4.2binbash #
输入要修改的shell
Shell changed. #
显示成功修改了shell
#
此处chsh
并没有附加参数,所以默认是修改root
的shell
,如要改变其他用户的登录shell
,
可以在后面跟上用户名,使用这种方式给用户john
更改shell
[root@localhost ~]# chsh john
chsh命令做的工作就是修改了etcpasswd文件中登录Shell的路径,所以如果明白了chsh的原理,实际上可以手工编辑etcpasswd文件,将root用户的这行改成下面的样子(这又一次印证了Linux中一切皆文件的说法):
- [root@localhost ~]# cat etcpasswd | grep bash4.2
root:x:0:0:root:/root:usrlocal/bash4.2binbash
最后还需要重新登录以获得Shell,登录后再次验证一下当前的Shell版本。
- [root@localhost ~]# echo $BASH_VERSION
4.2.0(1)-release
#
请注意,如果这时候你使用下面的命令可能会犯迷糊:为什么版本是3.2.25
呢?不是已经是4.2
了吗?
[root@localhost ~]# bash --version
GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
#
通过使用whereis bash
命令可了解当前运行的bash
命令真实运行的是binbash
,也就是说
现在是在版本为4.2
的bash
中运行了一个3.2.25
版本的bash
命令。如果要想每次运行bash
的
时候使用的是4.2
的版本,需要修改PATH
变量的值,读者可以自行完成这个任务
[root@localhost ~]# whereis bash
bash: binbash usrlocal/bash4.2 usrshare/man/man1/bash.1.gz