这篇是摘抄各个前辈的博客整合的
一:
系统响铃是由于,我们的应用程序想终端发出了一个0x7这个字符。终端收到这个字符后就会响铃,解决问题的方法就是不让我们的程序向终端发送这个字符。
或者告诉我们的应用程序向终端发送其他字符,例如空字符等。这就涉及到两个文件terminfo或者termindo。
还有一种方法就是将PC喇叭的驱动模块去掉。使用的命令是 rmmod pcspkr
还有就是使用expect,script或者screen,这些程序将我们的程序在虚拟的终端上运行,他们会将字符0x7解释成其他的字符。Gnu screen是最简单的方法,我们只要在~/.screenrc文件中添加 如下的两行内容:
vbell on
termcapinfo * vb=
出现响铃会有这几个地方:
二:
完整去除响铃的方法:
- 控制台(CTRL+ALT+FN),
- 虚拟终端(就是X里的gnome-terminal)
- 登录窗口 (输入用户和密码的gdm)
- 其它X程序(如gedit删掉所有内容后继续按退格键)
整体关闭 vi /etc/inputrc
添加 set bell-style=none
关闭个人用户 vi ~/.inputrc
添加 set bell-style=none
2. 关闭vi中的响铃
vi /etc/vimrc (vim)
vi /etc/virc (vi)
添加:
set vb t_vb=
3.
- 登录进X后,在终端运行
xset -b
X中所有程序不响了。控制台,登录界面依然响。这可条命令写进gdm登录后运行的脚本里,不过gdm还是会响的。如果写进“/etc/X11/xinit/xinitrc”末尾还是会响
- 在菜单“系统”>>“首选项”>>“音效”,“音效”选项卡,取消勾选“播放报警声音”,其它X程序不响,虚拟终端响。
- 在菜单“系统”>>“系统管理”>>“登录窗口”,“辅助功能”选项卡,取消勾选“启用辅助功能登录”,登录窗口依然响,没任何效果。
在X Window系统下,可以使用xset 命令为之,命令如下:
xset b off
4. 永久关闭系统的响铃
要永久关闭系统响铃,可以在系统启动的时候把rmmod命令放在/etc/rc.d/rc.local文件中:
echo “rmmod pcspkr” >> /etc/rc.d/rc.local
三:
在用TAB补全命令时,老是“嘀。。”响,声音太响, 搜索到这个方法,在CentOS和ubuntu上都能关掉终端响铃。
终端响铃声能使用setterm关闭,如下所示:
使用setterm
# setterm -blength 0
如果想在启动时就关闭终端响铃,你要把这条命令加入/etc/conf.d/local.start 之中。然而,这只是禁用掉了目前正在使用终端的响铃。想要在其他的终端上禁用响铃的话,把这条命令的输出重定向到目标终端去即可,如下所示:
使用setterm (bis)
# setterm -blength 0 >/dev/vc/1
你需要用想要禁用响铃的那个终端来替换/dev/vc/1.
使用控制台登录后,在shell提示符下面操作时会用到大量的Tab来自动补全,这个时候机器的蜂鸣器就会嘟嘟吡吡不停。
这个嘟吡的声音可以使用setterm命令来设置它的长段
setterm -blength 0
后面的取值可以是0-1000,可以用setterm看看它的用法。仅仅输入上面一条命令还不行,下次重新启动还会有吡吡声。彻底解决需要将以上命令加入/etc/rc.d/rc.local
补充一点:
/etc/inputrc里面有一条语句
# do not bell on tab-completion
#set bell-style none
这里如果去掉set前面的注释符,仅仅是把tab自动补全的声音去掉,而不能彻底消除console下面其它的声音(比如Backspace, vi)
以上只是关闭了蜂鸣器的声音,并不影响音箱的发声,play music, video不会有任何副作用。
另外 ,查了其他的帖子,还有一种方式:
或者编辑 /etc/profile,添加这一句
setterm -blength 0