Bash
為什麼即使設置了 ICRNL,終端也會發送 CR?
我有一個帶
bash
外殼的終端。終端
ICRNL
設置了標誌(所以當終端發送 aCR
時,它將被翻譯為LF
,然後LF
將被發送到bash
):但我做了一個測試,表明
bash
會收到CR
而不是LF
。這是為什麼?我所做的測試正在
hexdump
另一個終端上執行,並讓它讀取第一個終端正在發送的內容。
當您
stty -a
從 bash 提示符執行時,您會看到終端設置,而 bash 沒有讀取命令行。當 bash 讀取命令行時,它會更改一些終端設置,包括
icrnl
(關閉,因為 bash 需要原始輸入,因為它自己進行輸入處理)。Bash 在執行命令之前恢復原始設置。要在 bash 提示符下查看終端設置,請注意這是哪個終端,然後
stty
從另一個終端執行。例如:
- 在一個終端中:
bash-4.2$ tty /dev/pts/3 bash-4.2$
- 在另一個終端:
$ stty -a </dev/pts/3 … -icrnl …