Bash

為什麼即使設置了 ICRNL,終端也會發送 CR?

  • May 25, 2017

我有一個帶bash外殼的終端。

終端ICRNL設置了標誌(所以當終端發送 aCR時,它將被翻譯為LF,然後LF將被發送到bash):

在此處輸入圖像描述

但我做了一個測試,表明bash會收到CR而不是LF。這是為什麼?

我所做的測試正在hexdump另一個終端上執行,並讓它讀取第一個終端正在發送的內容。

當您stty -a從 bash 提示符執行時,您會看到終端設置,而 bash 沒有讀取命令行。

當 bash 讀取命令行時,它會更改一些終端設置,包括icrnl(關閉,因為 bash 需要原始輸入,因為它自己進行輸入處理)。Bash 在執行命令之前恢復原始設置。

要在 bash 提示符下查看終端設置,請注意這是哪個終端,然後stty從另一個終端執行。例如:

  1. 在一個終端中:
bash-4.2$ tty
/dev/pts/3
bash-4.2$ 
  1. 在另一個終端:
$ stty -a </dev/pts/3
… -icrnl …

引用自:https://unix.stackexchange.com/questions/367081