认识
官网:https://www.gnu.org/software/bash/
文档:https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html
仓库:https://savannah.gnu.org/projects/bash/
Bash 是个 sh 兼容的命令语言解释器,执行标准输入或文件中的命令。Bash 还包含了 ksh 和 csh 的有用功能。Bash 最终旨在成为 IEEE Standard 1003.2 的一致性实现。
组成
Bash Startup Files
参考 https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html 文档
针对 Interactive Non-Login Shell 启动,在 GNOME Terminal 中,我们创建新的窗口,其以该方式运行。该时 bash 仅加载 ~/.bashrc 文件。
安装的可执行命令
# apt-file list bash
- bash,主程序文件,交互的 SHELL。
- rbash,执行 bash 的快捷方式。存在于发行版的 bash 中。
- bashbug,用于 bug 反馈。
- clear_console,用于清除控制台。
性质
语法格式
WIP
Programmable Completion
Programmable Completion 是 Bash shell 的一个强大功能,它允许用户在输入命令时通过按 Tab 键自动补全命令、文件名、变量名、用户名、主机名等。
注意,默认的自动补全仅能进行简单的自动补全,比如文件目录路径。但称为“Programmable”的原因是其允许扩展 Bash 的自动补全功能,它能满足我们的跟多需要。
构造
针对用户,我们按照文档进行安装即可| https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Installing-Bash
从发行版的源中安装
# Kali GNU/Linux Rolling apt-get install bash
使用源码编译安装 BASH | 在 Linux 下
- LFS/Bash-4.3.30: http://www.linuxfromscratch.org/lfs/view/7.10/chapter06/bash.html
各个发行版中已经预装了 bash,如果想手动体验一把 bash 的编译,参考:
LFS/Bash-4.3.30: http://www.linuxfromscratch.org/lfs/view/7.10/chapter06/bash.html
BASH 主页: https://www.gnu.org/software/bash/
下载 BASH 并进入源码目录;
准备 BASH,然后进行编译:
#!/bin/bash
# 准备
./configure --prefix=/usr \
--docdir=/usr/share/doc/bash-4.3.30 \
--without-bash-malloc \
--with-installed-readline
# The meaning of the new configure option:
#
# --with-installed-readline
# This option tells Bash to use the readline library that is already installed on the system rather than using its own readline version.
# 进行编译
make
# 安装
make install
mv -vf /usr/bin/bash /bin
应用
忽略重复的历史命令
How do I prevent commands from showing up in Bash history? – Stack Overflow
在执行命令的过程中,我们通常会使用 [↑] 来选择我们执行过的命令。但是当执行多次后,我们想找到更久之前的命令,就需要通过 [↑] 来翻过很多重复命令;
通过 export HISTCONTROL=ignoredups 变量,能够控制 Bash History 忽略重复命令;
查找定义某个函数的文件
DeepSeek / 在 bash 中,如何找到定义函数的脚本文件?
shopt -s extdebug
declare -F function_name
shopt -u extdebug # 完成后关闭