源码更新 Bash 版本

编译安装

确定 Shell 版本

现在主流的 Linux 发行版大都自带了Bash,除了极个别(比如 Ubuntu)会在执行脚本时从交互式的 Bash 切换为其他的 Shell(例如 Dash)外,在大部分的情况下都以 Bash 为主。
# echo $SHELL
# bash --version
# echo $BASH_VERSION

源码下载并解压

首先访问 Bash 下载页面,在 Downloads 中选择一个下载的链接,嫌网速慢可以自己挑一个 GNU Mirror 进行下载。
# wget http://ftp.gnu.org/gnu/bash/bash-4.4.tar.gz
然后进行解压
# tar -zxvf bash-4.4.tar.gz

编译安装

运行当前目录下的 configure,将 bash 安装到 /usr/local 目录中,不过因为某些原因,需要使用--prefix指定安装路径,方便管理。
# ./configure --prefix=/usr/local/bash4.4 && make && make install

使用新版本的 Bash

注册 Shell 路径

虽然已经安装完成,但是还需要在系统中填写新 Shell 的路径,即直接编辑 /etc/shells 文件,在文件末尾追加 Shell 路径。
# echo "/usr/local/bash4.4/bin/bash" >> /etc/shells

使用 chsh 修改登陆后的默认 Shell

没有附加参数时,chsh 默认修改 root 用户的登录shell,后置参数为用户名,即修改该用户登陆后使用的 shell。chsh 命令做的工作就是修改了 /etc/passwd 文件中登录 Shell 的路径,所以如果明白了 chsh 的原理,实际上可以手工编辑 /etc/passwd 文件。
# chsh cubat
Changing shell for cubat.
New shell [/bin/bash]: /usr/local/bash4.4/bin/bash
Shell changed.

参考资料

评论