Ich habe ein Terminal mit der bash
Shell.
Das Terminal hat das ICRNL
Flag gesetzt (wenn das Terminal also ein sendet CR
, wird es in übersetzt LF
und anschließend LF
an gesendet bash
):
Aber ich habe einen Test gemacht, der gezeigt hat, dass bash
empfangen wird CR
und nicht LF
. Warum ist das so?
Der von mir durchgeführte Test wird hexdump
in einem anderen Terminal ausgeführt und lässt es lesen, was das erste Terminal sendet.
Antwort1
Wenn Sie es stty -a
von der Bash-Eingabeaufforderung aus ausführen, werden Ihnen die Terminaleinstellungen angezeigt, während Bash keine Befehlszeile liest.
Wenn Bash eine Befehlszeile liest, ändert es einige Terminaleinstellungen, darunter icrnl
(ausgeschaltet, da Bash Roheingaben benötigt, da es seine eigene Eingabeverarbeitung durchführt). Bash stellt die ursprünglichen Einstellungen wieder her, bevor der Befehl ausgeführt wird.
Um die Terminaleinstellungen in der Bash-Eingabeaufforderung anzuzeigen, notieren Sie sich, um welches Terminal es sich handelt, und führen Sie es stty
von einem anderen Terminal aus aus. Beispiel:
In einem Terminal:
bash-4.2$ tty /dev/pts/3 bash-4.2$
In einem anderen Terminal:
$ stty -a </dev/pts/3 … -icrnl …