当前的GNU/Bash维护者Chet Ramey于2020年12月7日宣布发布最新的主要版本Bash 5.1。Bash是许多Linux发行版中的默认Shell,在开发人员中尤其是在使用Linux容器的开发人员中很流行。 它是bash的第五个主要版本。 它带有一个新的增强型随机数生成器,并添加了一个名为SRANDOM的新变量。 让我们看看如何在Linux上安装和使用新发布的GNU/BASH 5.1。

GNU/Bash 5.1发布

Bash是Bourne Again SHell的首字母缩写。 它是sh兼容的Shell,并包含KSH和csh。 新版本修复了bash-5.0中的许多突出错误,并引入了一些新功能。 最重要的变化是返回bash v4.4行为,即不对包含反斜杠但不包含任何未引用的通配符的单词执行路径名扩展。

GNU/Bash 5.1和随机数${SRANDOM}

我们可以使用以下方法在Bash下创建或生成随机数(缺少任何模式的数字序列):

echo “$RANDOM”
printf “%s\n” “$RANDOM”

这是测试随机数的bash for循环:

for r in {1..5}
do
printf “%s\n” “$RANDOM”
done

如下图:

 

新的bash变量SRANDOM已添加到GNU/Bash-5.1发行版中,该变量从系统的熵引擎获取其随机数据,并且没有内衬,因此无法重新植入以获得相同的随机序列。例如:

每次引用该变量时,它都会扩展为32位伪随机数。在支持/ dev / urandom或arc4random的系统上,随机数生成器不是线性的,因此每个返回的数字与其之前的数字都没有关系。不能为随机数生成器提供种子,因此对此变量的分配无效。如果未设置SRANDOM,则即使随后将其重置,它也会丢失其唯一属性。

新的内置功能和其他功能

  • 有新的可加载内置程序mktemp,accept,mkfifo,csv和cut/lcut。
  • 现在,Shell程序将扩展历史记录编号(例如,在PS1中),即使它当前未将命令保存到历史记录列表中。
  • 如果select内置函数对读取的内置函数的内部调用被信号中断,则现在将运行陷阱。
  • Bash现在允许SIGINT陷阱处理程序以递归方式执行。
  • 现在可以在posix模式下使用进程替换。
  • ulimit有一个-R选项来报告和设置RLIMIT_RTTIME资源。
  • 现在,通过将多个带有序列号的消息写入系统日志,将历史记录写入syslog可以处理比syslog maxlength长的消息。

bash 5.0截图

在Linux和macOS上安装GNU/Bash 5.1

在Arch Linux上,您所要做的就是键入以下pacman命令:

linuxmi@linuxmi:~/www.linuxmi.com$ pacman -Syu

macOS用户使用brew命令更改或安装bash:

linuxmi@linuxmi:~/www.linuxmi.com$ brew install bash

Debian bullseye/sid用户运行apt命令以获取最新版本:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt update
linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt upgrade

首先根据你的操作系统安装GNU/GCC编译器集合,现在使用wget命令抓取压缩包,或者使用curl下载文件:

linuxmi@linuxmi:~/www.linuxmi.com$ wget https://ftp.gnu.org/gnu/bash/bash-5.1.tar.gz

解压或提取压缩包,运行:

linuxmi@linuxmi:~/www.linuxmi.com$ tar xf bash-5.1.tar.gz

编译Bash最简单的方法是使用cd命令将cd到源代码目录中,然后运行:

linuxmi@linuxmi:~/www.linuxmi.com$ cd bash-5.1
linuxmi@linuxmi:~/www.linuxmi.com/bash-5.1$ ./configure

打开’ configure ‘需要一些时间。当运行时,它打印消息,告诉它正在检查哪些特性。输入“make”来编译Bash,并构建“bashbug”bug报告脚本:

linuxmi@linuxmi:~/www.linuxmi.com/bash-5.1$ make

或者,输入“make tests”来运行Bash测试套件,然后输入“make install”来安装“bash”和“bashbug”。这也将安装手册页和信息文件:

linuxmi@linuxmi:~/www.linuxmi.com/bash-5.1$ sudo make install

加载新的bash并检查bash版本:

linuxmi@linuxmi:~/www.linuxmi.com$ bash
linuxmi@linuxmi:~/www.linuxmi.com$ bash –version
GNU bash,版本 5.1.0(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2020 Free Software Foundation, Inc.
许可证 GPLv3+: GNU GPL 许可证第三版或者更新版本 <http://gnu.org/licenses/gpl.html>

本软件是自由软件,您可以自由地更改和重新发布。
在法律许可的情况下特此明示,本软件不提供任何担保。
linuxmi@linuxmi:~/www.linuxmi.com$ echo ” $BASH_VERSION”
5.1.0(1)-release

总结

除了在GNU/Bash 5.1中增强了随机数生成和添加了一个名为$SRANDOM的新变量之外,我们还看到了许多其他小的增强。转到GNU bash项目主页获取最新的软件。

发表评论