Sie waren auf dem richtigen Weg mit trap
. Was Sie wollen, ist folgendes:
trap "stty erase ^?" SIGCHLD
Sie können das hinzufügen .bashrc
. Beachten Sie, dass dies ausgeführt wird, wenn ein Teilprozess endet.
Dies funktioniert nur in interaktiven Sitzungen. Für nicht interaktive Sitzungen bash
wird die Jobsteuerung standardmäßig nicht aktiviert. Sie müssen daher set -o monitor
zuerst ausgeführt werden. Ich bezweifle jedoch, dass Sie in nicht-interaktiven Skripts Backspaces benötigen.
SIGCHLD
wird an den übergeordneten Prozess gesendet, wenn ein Unterprozess beendet wird.
Eine alternative Methode besteht darin, die andere Shell in ein Skript einzubinden, z.
#!/bin/sh tcsh stty erase ^?
Wenn Sie dann Ihre Shell über das Skript starten, führt das Skript den stty erase
Befehl aus, nachdem die Shell beendet wurde. Dies hat weniger Nebenwirkungen als ein globaler trap
Handler, aber es funktioniert natürlich nur, wenn Sie das Skript jedes Mal starten (oder einen Aliasnamen dafür erstellen, z alias 'tcsh' '~/launch-tcsh.sh'
. B. ).