I find the beep useful for some things, so I only want to turn it off for tab completion (I'm not asking how to completely turn it off, that has already been answered in a different question on Serverfault). I also don't have root access, working on RHEL5.
4 Answers
Readline library has bell-style variable:
Controls what happens when Readline wants to ring the terminal bell. If set to ‘none’, Readline never rings the bell. If set to ‘visible’, Readline uses a visible bell if one is available. If set to ‘audible’ (the default), Readline attempts to ring the terminal’s bell.
So you can put into your ~/.inputrc file following line:
set bell-style none
Next, run bind -f ~/.inputrc once to load it.
-
7If you want this setup to be default for all users of the system, you can edit /etc/inputrc config file with root user. – Can Kavaklıoğlu Aug 12 '15 at 08:28
-
2then run `bind -f ~/.inputrc` to reload it. – wisbucky Jun 17 '20 at 17:14
If you don't want to create and maintain a separate ~/.inputrc file, you can also just add this line to ~/.bashrc:
bind 'set bell-style none'
Then source ~/.bashrc to reload it.
- 3,158
- 1
- 30
- 18
-
2This is the ONLY solution that worked for me (although "visible" option doesn't work). Even disabling Critical Stop and Default Beep Windows sounds didn't work (using WSL in ConEmu). – Moos Jan 10 '21 at 19:50
I'm not aware of any way to disable the tab completion bell in bash (aside from disabling the bell entirely or changing it to the subjectively-more-annoying visual bell).
You could try set show-all-if-ambiguous on in your ~/.inputrc - this makes the shell show the list of matching commands/items immediately when you hit tab instead of waiting for you to hit tab twice.
A side effect is that there is no bell before the candidate matches are shown.
- 531
- 2
- 5
In ~/.inputrc, there exists the following possibility, but it didn't do anything for me. It just rings the bell. This may be a bug in the Cygwin bash.
set bell-style visible
- 854
- 1
- 10
- 18