ICRNL が設定されているにもかかわらず、端末が CR を送信するのはなぜですか?

ICRNL が設定されているにもかかわらず、端末が CR を送信するのはなぜですか?

シェル付きの端末がありますbash

端末にはICRNLフラグが設定されています (そのため、端末が を送信するとCR、 に変換されLF、 がLFに送信されますbash)。

ここに画像の説明を入力してください

しかし、テストを実行したところ、 はbash受信されCR、 は受信されないことがわかりましたLF。なぜでしょうか?

私が作成したテストはhexdump別のターミナルで実行され、最初のターミナルが送信している内容を読み取るようにしています。

答え1

bash プロンプトから実行するとstty -a、bash がコマンド ラインを読み取っていないときにターミナル設定が表示されます。

bash はコマンドラインを読み取るときに、icrnl(bash は独自の入力処理を行うため、raw 入力を必要とするため、オフにする) など、いくつかの端末設定を変更します。bash は、コマンドを実行する前に元の設定を復元します。

bash プロンプトでターミナル設定を確認するには、どのターミナルであるかをメモし、stty別のターミナルから実行します。例:

  1. 1 つのターミナルで:

    bash-4.2$ tty
    /dev/pts/3
    bash-4.2$ 
    
  2. 別の端末で:

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

関連情報