silence bell in sh

How do you silence the bell in sh in FreeBSD 15?

I.e. I don't wan't to hear anything on the speaker on pressing backspace in an empty command line.

printf "\007" should still work, so no sysctl

set bell-style none does not work.
 
If you're using xterm, you can specify -vb on the command line, which will make xterm use a 'visual bell' (a brief flash) rather than sounding the system bell. Just say
$ xterm -vb
 
[…] I don't wan't to hear anything on the speaker on pressing backspace in an empty command line.

printf "\007" should still work, so no sysctl […]
Unfortunately this is not possible. sh(1) uses editline(3). It has one terminal_beep procedure. Neither terminal_beep nor every location calling terminal_beep consult some configuration switch. Error condition → unconditionally ring bell.​
sysctl kern.vt.enable_bell=0
This is already the default and for non‑root users it’s kbdcontrol(1)  ‑b off anyway.​
 
Unfortunately this is not possible. sh(1) uses editline(3). It has one terminal_beep procedure. Neither terminal_beep nor every location calling terminal_beep consult some configuration switch. Error condition → unconditionally ring bell.
This is already the default and for non‑root users it’s kbdcontrol(1)  ‑b off anyway.​
Never noticed. It's an old syscons annoyance. Disabling the speaker entirely would be better but I've never seen a command for that. Maybe a problem because it's a stone-age device.
 
Never noticed. It's an old syscons annoyance. Disabling the speaker entirely would be better but I've never seen a command for that. Maybe a problem because it's a stone-age device.

Ever since I no longer need to do PCM voice generation on the PC speaker I've found it a useless piece of hardware. I'd disconnect the speaker, or if it is on the mobo then chew a piece of gum and stick it on the component. LOL
 
Ever since I no longer need to do PCM voice generation on the PC speaker I've found it a useless piece of hardware. I'd disconnect the speaker, or if it is on the mobo then chew a piece of gum and stick it on the component. LOL
It's still somehow relevant. I have a PC that I boot without a monitor. If it beeps with the speaker it's gone through POST succesfully and tries to find the boot device. If it can't boot because of broken memory or whatever, it doesn't beep either or a lot because of a RAM error. There's still a piece of feedback in it that's not in the hifi PCI amp.
 
I also find it useful on a PC; ideally, you'd have the knowledge to transform the bell signal into lighting up an LED.
No idea if it's possible:-/
 
It's not that difficult in hardware, if one is using the standard PC speaker output (a few pins on the motherboard that go to a tiny little buzzer). One can replace the buzzer with a LED with a capacitor and resistor. If one is instead using the sound output (typical on laptops), it requires a bit of software work. And finding a place to connect the LED.
 
I.e. I don't wan't to hear anything on the speaker on pressing backspace in an empty command line.

printf "\007" should still work, so no sysctl
As others have mentioned, that’s not possible. You can silence the terminal bell, but then printf "\007" doesn’t work either.

However, you can still use /dev/speaker to emit sounds if you want to, even if the terminal bell has been disabled. You just have to load the speaker kernel module (it’s not in the GENERIC kernel, I think). Also make sure that you have permission to write to the device – usually that means you have to be member of the right group, or change the permissions and/or group of the device accordingly, see /etc/devfs.conf.

In some scripts, I use /dev/speaker to emit short melodies in certain cases to catch my attention (i.e. not really that often).
I’ve got these in a collection of shell functions that I’ve written:
sh:
beep_happy ()
{
    echo "l8ceg" > "/dev/speaker"
}

beep_oh_no ()
{
    echo "l16ol<<cba+acba+a" > "/dev/speaker"
}
The first one is used when a long-running compute job has finished successfully, for example, like an FFmpeg encoding session. And the second one is used when something bad has happened that needs my attention ASAP.

Important: Using /dev/speaker will emit the sounds on the machine where you access the device. When logged into a machine remotely, the remote machine will emit the sounds. This is different from printf "\007" that always rings the bell of the terminal in front of your face.
 
Back
Top