在Windows 10上禁用WSL终端中的哔声

693
如何在Windows 10上禁用WSL中的视觉和音频提示声?

19
此问题不符合 StackOverflow 对编程的定义。更适合在相关网站 superuser.com 或 unix.stackexchange.com (Unix 和 Linux)上发布。考虑使用问题底部的标志链接并请求管理员将其移动。请勿在 2 个不同的网站上发布相同的问题。祝好运! - shellter
19
你不能在readline初始化文件中设置bell-style none吗?这个文件可以是1. INPUTRC 环境变量,2. ~/.inputrc 或者3. /etc/inputrc - Benjamin W.
8
如果您有一个 ~/.inputrc 文件,或者 INPUTRC 指向其他位置,那么 /etc/inputrc 将被忽略。请问您是否有 ~/.inputrc 文件,或者 INPUTRC 指向其他位置? - Benjamin W.
6
我认为这个问题在这里很合适。据我所知,问题不一定要涉及编程才能符合SO的标准。 - quant
3
@shellter WSL似乎符合“主要由程序员使用的软件工具”?微软的描述明确指出它是为开发人员使用而设计的,“Windows子系统用于Linux让开发人员运行GNU / Linux环境”。 - Gert van den Berg
显示剩余11条评论
11个回答

1032
  1. 要在 bash 中禁用蜂鸣声,您需要在 /etc/inputrc 文件中取消注释(如果尚未存在,则添加)以下行:set bell-style none

    注意: 因为它是一个受保护的文件,您需要是特权用户才能编辑它(例如使用类似于 sudo <editor> /etc/inputrc 的方法启动文本编辑器)。

  2. 要在 vim 中禁用蜂鸣声和可视化提示,您需要将以下内容添加到您的~/.vimrc文件中:

    set visualbell
    set t_vb=
    
  3. 要在less中禁用蜂鸣声(即在手册页面和使用“git diff”时),您需要在~/.profile文件中添加export LESS="$LESS -R -Q"


59
为了快速解决问题,可以通过 Windows 音量混合器禁用声音。https://github.com/Microsoft/BashOnWindows/issues/715#issuecomment-238010146 - Olga
86
我需要重新启动控制台才能使更改生效,但更改确实起作用了! - TJB
4
我认为只需运行 source path-to-.bash_profile(或者你修改的文件),配置文件就会重新加载,这样就不用重启控制台了,不过我很高兴它起作用了! - Andrea Tulimiero
6
我更喜欢@Nemo的解决方案,它将设置放在用户本地的~/.inputrc文件中,并且还修复了vim的蜂鸣声,这同样令人讨厌,而且这个解决方案没有解决。最后,需要注意的是,当通过ssh连接到另一台机器时,您需要在远程机器上拥有相同的.inputrc和.vimrc文件以禁用ssh的蜂鸣声。这就是Nemo的解决方案真正优越的地方,因为通常不能修改远程机器的系统设置。 - Romain Pokrzywka
54
为什么这不是默认设置呢?难道有人认为,“每次我使用Tab键补全时,我真正需要听到的是BEEEP BEEEP BEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEP”吗? - Grant Curell
显示剩余17条评论

313

由于终端通常只会发出铃声,如果您希望在任何地方关闭它,那么在Windows上使用bash的最简单方法是:

  1. 在提示符处连续按退格键
  2. 右键单击音量图标并选择“打开音量混合器”
  3. 将“控制台窗口主机”的音量降至零

31
我非常喜欢这种简洁的风格。 - engineercoding
19
考虑到我需要 ssh 连接许多服务器且无法轻松管理每个服务器上的本地 bash 设置,这种解决方案对我来说是最好的,因为它是全局性的。 - Elijah W. Gagne
43
一个由 Windows 引起的问题的 Windows 解决方案 :D - PabTorre
6
你是不是按了一下退格键或其他按键,让控制台窗口发出了声音?在打开混音器之前要这样做。只有当Windows确定应用程序正在发出声音时,它们才会出现在混音器中。一段时间后,Windows会将它们移除。 - TedMilker
6
奶酪和米!这是唯一对我有用的东西。真他妈的烦人。谢谢@TedMilker - Ilan
显示剩余14条评论

127
你需要将以下代码添加到bash和vim配置文件中,
1)关闭bash的提示音。
vi ~/.inputrc
set bell-style none

2)关闭 vi 的响铃声。

vi ~/.vimrc
set visualbell
set t_vb=

设置可视化提示后,会关闭音频提示,清除可视化提示长度将停止闪烁。


11
谢谢,我最喜欢这个解决方案,因为它解决了终端本身和vim的哔哔声问题,并且避免了视觉钟摆的闪烁。我也喜欢你创建用户配置文件而不是编辑位于/ etc中的系统配置文件。 - Romain Pokrzywka
请注意,这也可以很好地禁用ssh访问远程机器时的蜂鸣声,只需在远程机器上创建相同的文件夹并放置相应文件即可。 - Romain Pokrzywka
我正在使用 git 版本 2.31.0,在 Windows 10 操作系统和 Windows 终端中。将我的 inputrc 文件设置为 "set bell-style none" 对我有效。 - Joshua Wolfe

124

/etc/inputrc中取消注释set bell-style none,并创建一个带有setterm -blength 0.bash_profile文件未能停止vim发出哔哔声。

对我有效的方法是在我的主目录下创建一个.vimrc文件,并使用set visualbell命令。

来源:https://linuxconfig.org/turn-off-beep-bell-on-linux-terminal


31
哇,为什么什么时候有人想到嘟嘟声是一个好的默认设置?谢谢!需要您的答案来关闭vi中的铃声。 - Andrew T Finnell
适用于本地,但对于SSH到远程服务器不好。 - Matt
@Matt - 如果你想进行SSH会话,你需要调整你所使用的SSH客户端的设置。例如,如果你使用的是PuTTY,那么就要调整它的设置。 - asterx
1
你需要一个/.inputrc和一个/.vimrc文件来消除bash和vim的蜂鸣声,可以参考@Nemo的解决方案。 同时请注意,如果你想避免ssh的蜂鸣声,你需要在远程机器上也使用这两个文件。 - Romain Pokrzywka

40
在系统声音中,将“Critical Stop”替换为一个无声的 wav 文件 1
完全删除声音对我来说没有用。显然,在这种情况下会使用一些默认声音。

System sounds configuration

(感谢SuperUser上的this.lau_发现了这个问题)。


3
如果您拥有一台Linux电脑,制作一秒钟的无声音频很容易。安装sox软件后,输入命令"$ rec silence.wav trim 0 1"即可。 - LeviX
3
这对我很有帮助。当我把“关键停止”设置为“无”时,它被重置为“默认提示音”,我也必须把它设置为“无”。这些声音在我们戴耳机时特别烦人。Windows 应该学习改善。 - Venki

36

这与Bash Windows 10无关。 但是,如果您想要在Zsh中删除bell终端提示音,只需在zshrc中使用正确的选项即可。(对于Vim,答案已经发布)

unsetopt beep

http://zsh.sourceforge.net/Doc/Release/Options.html

我很快就找到了这个选项,但如果它在这个帖子上的话,我会更快地找到它^^

祝好运!


21
在Windows终端设置中,选择配置文件,然后点击“高级”>“提示音”,将其关闭:

在此输入图片描述


编辑在此。我已删除您的原始答案(有关降低音量的答案),并保留了您更新后的答案,实际上非常好。点个赞! - mikemaccana
2
如果您正在使用Windows终端,这是最佳答案。 - ZYinMD
这个答案是唯一一个在使用ssh或不使用时都可以在zshbash上正常工作的。我推荐使用这个,因为这不是一个hack。如果你正在使用Windows终端,这是一个内置功能。 - Amir Pourmand

13
我发现TedMilker的解决方案行得通,但每次重新启动后我都需要重新调整音量。为了使其永久生效,我在Windows应用程序音量和设备首选项中调整了音量水平。
引用自这篇文章:
设置/系统/声音/应用程序音量和设备首选项
将Console Window Host的值设为零。
(您可能需要在控制台窗口中按Tab / Backspace键以触发提示音才能出现“Console Window Host slider”滑块。)

4
除了jgr208所说的内容之外,您可能已经有一个~/.profile文件,而~/.bash_profile可能不存在,就像我的情况一样。
在这种情况下,将setterm -blength 0添加到.profile中。
如果您创建了.bash_profile,则您的.profile将被忽略,Windows写入其中的任何内容都将不起作用。

2
为了在远程机器上禁用ssh时的蜂鸣声,只需在远程机器上创建相同的~/.inputrc~/.vimrc文件,以阻止ssh本身发出蜂鸣声。
有关每个文件的内容,请参见@Nemo的答案。

很肯定在这里使用.vimrc没有任何意义。 - Joe Cabezas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接