為什麼即使設定了ICRNL,終端仍發送CR?

為什麼即使設定了ICRNL,終端仍發送CR?

我有一個有外殼的終端bash

終端ICRNL設定了標誌(因此當終端發送 a 時CR,它將轉換為LF,然後LF將被發送到bash):

在此輸入影像描述

但我做了一個測試,結果顯示bash會收到CR和不會收到LF。這是為什麼?

我所做的測試是hexdump在另一個終端機中運行,並使其讀取第一個終端發送的內容。

答案1

當您stty -a從 bash 提示字元運行時,您會看到終端設置,而 bash 不讀取命令列。

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

要在 bash 提示字元下查看終端設置,請記下這是哪個終端,然後stty從另一個終端運行。例如:

  1. 在一個終端機中:

    bash-4.2$ tty
    /dev/pts/3
    bash-4.2$ 
    
  2. 在另一個終端中:

    $ stty -a </dev/pts/3
    … -icrnl …
    

相關內容