Bash Shell的安装和升级(源码安装)
如果你安装的 Linux 是 RedHat、CentOS、Fedora、Ubuntu、Debian 等主流发行版,那么在你的系统中很可能已经预装了 Bash Shell,只需要确认一下是否确实已经安装以及预装的版本即可。具体的方法是:
# 确认系统中使用的 Shell 是 bash $ echo $SHELL /bin/bash # 查看系统中 Bash Shell 的版本(方法一) $ bash --version GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu) Copyright (C) 2005 Free Software Foundation, Inc. # 查看系统中 Bash Shell 的版本(方法二) $ echo $BASH_VERSION 3.2.25(1)-release源码方式安装 Bash
Linux 下安装软件的方式无非是 RPM 包安装、yum 安装、源码安装三种方式,读者可以任选一种方式。
不过,相对来说 RPM 包安装和 yum 安装方式比较简单,若再考虑各种包的依赖关系,这两种方式中又属 yum 安装更为简单。这里就不详细介绍这两种安装方法了,下面会具体示范使用源码安装 bash 的过程。
首先访问 http://www.gnu.org/software/bash/bash.html 页面,在 Downloads 中选择一个下载的链接,笔者选择了中国科技大学提供的FTP下载目录:ftp://mirrors.ustc.edu.cn/gnu/bash/。
当前很多生产环境的系统中使用的 bash 版本还是 3.2 版,读者可以根据实际需要选择具体的版本。在笔者撰写本教程时,最新的版本是 4.2 版本,所以这里使用这个版本来做示范。
1) 使用wget下载最新的 bash 源码包具体操作如下所示:
$ wget ftp://mirrors.ustc.edu.cn/gnu/bash/bash-4.2.tar.gz --2013-04-11 19:37:41-- ftp://mirrors.ustc.edu.cn/gnu/bash/bash-4.2.tar.gz = #x60;bash-4.2.tar.gz Resolving mirrors.ustc.edu.cn... 202.141.160.110, 2001:da8:d800:95::110 Connecting to mirrors.ustc.edu.cn|202.141.160.110|:21... connected. Logging in as anonymous ... Logged in! == SYST ... done. == PWD ... done. == TYPE I ... done. == CWD /gnu/bash ... done. == SIZE bash-4.2.tar.gz ... 7009201 == PASV ... done. == RETR bash-4.2.tar.gz ... done. Length: 7009201 (6.7M) 100%[========================================== ] 7,009,201 1.93M/s in 3.5s 2013-04-11 19:37:46 (1.89 MB/s) - #x60;bash-4.2.tar.gz saved [7009201]2) 解压源码包
解压源码包并进入生成的目录中:
# 解压后会在当前目录下生成一个bash-4.2目录 $ tar zxvf bash-4.2.tar.gz #进入目录bash-4.2 $ cd bash-4.2 $3) 准备配置(configure)
最简单的配置方式是直接运行当前目录下的 configure,这会将 bash 安装到 /usr/local 目录中,不过编译安装软件时,好的习惯是使用--prefix参数指定安装目录。所以这里采用下面的配置方式。该条命令将会产生大量的输出,一开始会检查系统的编译环境以及相关的依赖软件。
最常见的错误可能是系统中没有安装 gcc 造成无法继续,如果是这个原因,使用 yum install gcc 命令进行安装。如果配置过程出现致命错误会立即退出,请读者注意输出内容中的 error 部分。
$ ./configure --prefix=/usr/local/bash4.2 checking build system type... i686-pc-linux-gnu checking host system type... i686-pc-linux-gnu Beginning configuration for bash-4.2-release for i686-pc-linux-gnu checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... Yes ......(略去内容)...... #如果大量的 checking 没问题,则配置环境检测通过。如果读者看到如下的输出内容,说明配置成功 configure: creating ./config.status config.status: creating Makefile config.status: creating builtins/Makefile config.status: creating lib/readline/Makefile config.status: creating lib/glob/Makefile config.status: creating lib/intl/Makefile config.status: creating lib/malloc/Makefile config.status: creating lib/sh/Makefile config.status: creating lib/termcap/Makefile config.status: creating lib/tilde/Makefile config.status: creating doc/Makefile config.status: creating support/Makefile config.status: creating po/Makefile.in config.status: creating examples/loadables/Makefile config.status: creating examples/loadables/perl/Makefile config.status: creating config.h config.status: executing default-1 commands config.status: creating po/POTFILES config.status: creating po/Makefile config.status: executing default commands #如果配置成功,会在当前目录中生成Makefile $ ll Makefile -rw-r--r-- 1 root root 77119 Apr 11 19:49 Makefile4) 正式编译
#编译过程会产生大量输出 $ make rm -f mksyntax gcc -DPROGRAM= bash -DCONF_HOSTTYPE= i686 -DCONF_OSTYPE= linux-gnu -DCONF_MACHTYPE= i686-pc-linux-gnu -DCONF_VENDOR= pc -DLOCALEDIR= /usr/local/bash4.2/share/locale -DPACKAGE= bash -DSHELL -DHAVE_CONFIG_H -I. -I. -I./include -I./lib -g -o mksyntax ./mksyntax.c ......(略去内容)......5) 安装
有时在安装前也可以进行测试,但是一般情况下这不是必需的。
#非必要步骤:测试安装 #[root@localhost bash-4.2]# make test $ make install #安装其实就是将make产生的文件复制到指定的目录中,在这里指定的目录就是之前我们用 --prefix 参数指定的/usr/local,可以在该目录中发现bash4.2目录 $ ls -ld /usr/local/bash4.2/ drwxr-xr-x 4 root root 4096 Apr 11 20:08 /usr/local/bash4.2/
到此为止,最新版本的 bash 就已经安装好了,确切地说是安装到了 /usr/local/bash4.2 中。
使用新版本的 Bash Shell虽然最新版的 bash 已经安装到系统中,但是还需要经过一些设置才能使用。首先需要将最新的 bash 的路径写到 /etc/shells 中,以向系统注册新 Shell 的路径。可以采取直接编辑 /etc/shells 文件的方式,或者采用如下更简单的方式:
$ echo /usr/local/bash4.2/bin/bash /etc/shells 然后使用命令 chsh(change shell 的简写)修改登录 Shell。 $ chsh Changing shell for root. New shell [/bin/bash]: /usr/local/bash4.2/bin/bash #输入要修改的shell Shell changed. #显示成功修改了shell #此处chsh并没有附加参数,所以默认是修改root的shell,如要改变其他用户的登录shell,可以在后面跟上用户名,使用这种方式给用户john更改shell $ chsh john
chsh 命令做的工作就是修改了 /etc/passwd 文件中登录 Shell 的路径,所以如果明白了 chsh 的原理,实际上可以手工编辑 /etc/passwd 文件,将 root 用户的这行改成下面的样子(这又一次印证了 Linux 中一切皆文件的说法):
$ cat /etc/passwd | grep bash4.2 root:x:0:0:root:/root:/usr/local/bash4.2/bin/bash
最后还需要重新登录以获得 Shell,登录后再次验证一下当前的 Shell 版本。
$ echo $BASH_VERSION 4.2.0(1)-release #请注意,如果这时候你使用下面的命令可能会犯迷糊:为什么版本是3.2.25呢?不是已经是4.2了吗? $ bash --version GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu) Copyright (C) 2005 Free Software Foundation, Inc. #通过使用 whereis bash 命令可了解当前运行的 bash 命令真实运行的是/bin/bash,也就是说现在是在版本为 4.2 的 bash 中运行了一个 3.2.25 版本的 bash 命令。如果要想每次运行 bash 的时候使用的是 4.2 的版本,需要修改 PATH 变量的值,读者可以自行完成这个任务 $ whereis bash bash: /bin/bash /usr/local/bash4.2 /usr/share/man/man1/bash.1.gz
21872.html
GCChtmllinux相关文章
- linux安装软件的三种方式:yum install 、rpm安装以及源码包安装
- 来客在线客服系统源码 支持一键安装
- curl源码编译安装
- 源码编译安装grafana
- AutoCAD 2021官方中文版【CAD2022最新版】完整简体中文版CAD2023安装教程
- 前后端分离项目(gin+gorm+vue3)腾讯云部署详细教程(go,mysql,nginx安装)
- Linux安装Nginx二-基于源码编译安装
- 最新PS2021软件以及安装教程视频 PS全版本软件下载地址(包括最新的2023)
- 【Flutter】Flutter 拍照示例 ( 拍照并获取照片源码示例 | image_picker 0.7.2+1 | Flutter 最新 SDK 安装 )
- Oracle数据库下载及安装图文操作步骤详解数据库
- Docker的安装配置及使用详解程序员
- 安装自主安装:PHPMySQL 源码环境搭建(phpmysql源码)
- 快速掌握Git:Linux下快速安装(gitlinux下载)
- :Linux源码安装:激发软件的魔力(linux源码安装软件)
- Linux上安装Flash插件的指南(linux安装flash插件)
- 系统中如何安装和使用shell编程在KSH Linux系统中安装与使用Shell编程的指南(kshlinux)
- 触手可及:简单快捷的Linux自动安装(自动安装linux系统)
- Oracle数据库快速下载与安装指南(oracle的下载安装)
- 源码安装Linux系统下Redis源码安装指南(linux下redis)
- 如何在 Anbox 上安装 Google Play 商店及启用 ARM 支持
- 初学者必看:Linux下安装软件的详细指南(linux安装软件在哪里)
- MySQL在何处安装?(mysql装在哪)
- Linux 安装 PAM 指南(linux安装pam)
- Linux安装mysql——源码安装
- 学习Linux:简易指南—源码安装Linux(源码安装linux)
- 如何在Mac上安装Redis?(redismac安装)
- CentOS 7系统Sass快速安装指南(linuxsass安装)
- Redis完美非源码安装体验(redis非源码安装)
- 操作简单,通过Shell快速安装Redis服务(shell安装redis)
- Oracle 10安装遇到问题,求救(oracle10安装错误)