在 Linux 終端 (TTY、終端模擟器、VMware Console) 中,按 Tab 補全失敗、Backspace 到行首、Ctrl+G 等操作會觸發刺耳的蜂鳴器聲音 (Beep/Bell)。本文提供從內核模塊、Readline 庫、終端模擟器、桌面環境到圖形登錄管理器的**多層級徹底靜音方案**。
# 全局生效 (/etc/inputrc) 或用戶級 (~/.inputrc)
# 取消註釋或添加:
set bell-style none
# 可選:視覺閃爍替代聲音 (終端支持時)
# set bell-style visible
bind -f /etc/inputrc。\a, ASCII 7) 不再發送蜂鳴器控制序列。
# 1. 暫時卸載 (立即生效,重啟失效)
rmmod pcspkr
# 2. 永久禁用 (創建 modprobe 規則)
echo "blacklist pcspkr" > /etc/modprobe.d/nobeep.conf
# 或
echo "install pcspkr /bin/false" > /etc/modprobe.d/nobeep.conf
# 3. 更新 initramfs (確保啟動階段不加載)
update-initramfs -u # Debian/Ubuntu
dracut -f # RHEL/CentOS/Fedora
# ~/.xprofile 或 ~/.xsessionrc (X11)
xset -b # 關閉 X 服務器鈴聲
xset b off # 同義
xset b 0 0 0 # 音量/音調/時長歸零
# Wayland (GNOME/KDE) 通常遵循桌面環境設置,但可在 ~/.config/environment.d/envvars.conf 添加
# GTK_MODULES=...
# GDM (GNOME 默認)
# 編輯 /etc/gdm3/custom.conf 或 /etc/gdm/custom.conf
[Initialization]
# 在啟動腳本中添加 xset -b (需 X 啟動後)
# 或使用系統聲音主題禁用
# LightDM
# /etc/lightdm/lightdm.conf
[Seat:*]
display-setup-script=xset -b
# SDDM (KDE)
# /etc/sddm.conf
[X11]
DisplayCommand=/usr/bin/xset -b
# 1. 直接發送蜂鳴字符
echo -e '\a'
# 或
printf '\007'
# 2. 觸發 bash 補全失敗 (連按兩次 Tab)
# 應無聲音 (若層級 1 生效)
# 3. 檢查 pcspkr 模塊狀態
lsmod | grep pcspkr
# 無輸出 = 已禁用
# 4. 檢查 X 服務器鈴聲狀態
xset q | grep -A 5 "bell"
# 應顯示 "bell percent: 0" "bell pitch: 0" "bell duration: 0"
| 場景 | 推薦組合 |
|---|---|
| 純字符終端 (TTY, SSH, 無桌面服務器) | 層級 1 (/etc/inputrc) + 層級 3 (blacklist pcspkr) |
| 桌面 Linux (GNOME/KDE/Xfce) + 終端模擟器 | 層級 1 + 層級 2 (終端設置) + 層級 5 (桌面聲音設置) |
| VMware/VirtualBox 虛擬機 | 上述 + 層級 7 (虛擬機聲音禁用) |
| WSL 2 (Windows Terminal) | 層級 1 + Windows Terminal `bellStyle: "none"` |
| 登錄畫面也要安靜 | + 層級 6 (GDM/LightDM/SDDM) |
通過 **Readline 配置 (層級 1) 解決 Shell 交互報警**,**內核模塊黑名單 (層級 3) 解決硬件蜂鳴器**,**終端/桌面設置 (層級 2/5) 解決圖形環境聲音事件**,三管齊下,徹底享受安靜的 Linux 體驗。