私のreadline/.inputrc設定が無視されるのはなぜですか?

私のreadline/.inputrc設定が無視されるのはなぜですか?

私の設定ラインがあります.inputrc

set enable-bracketed-paste on  # Insert paste as a string rather than possibly running it

コマンドラインに次のように入力すると有効です。

bind 'set enable-bracketed-paste on'

ただし、起動時に変数が設定されていませんbash v4.4.23

この行はなぜ無視されますか?

答え1

簡単に言うと:

構成内の別の行にコメントを入力してください。

行末にコメントがある場合はreadline自動的に無視されます。全体的にラインが異なる動作をしている場合。


これ手動言う:

Lines beginning with a ‘#’ are comments.

コメントが有効な構成行を無視するわけではありません。

次の行で変です。

set foobar on  # baz

結果:

readline: /home/ravi/.config/readline/inputrc: line 34: foobar: unknown variable name

これ#は、末尾にaがある行が実際に検証のために解析されることを意味します。有効な場合は無視されます。

答え2

readlineのパーサーはあまり良くないようです。

 $ bind 'set "enable-bracketed-paste" "on" '; echo $?; bind -v | grep 'bracketed'
 0
 readline: "enable-bracketed-paste": unknown variable name

 $ bind 'set enable-bracketed-paste "on" '; echo $?; bind -v | grep 'bracketed'
 0
 set enable-bracketed-paste off

 $ bind 'set enable-bracketed-paste on '; echo $?; bind -v | grep 'bracketed'
 0
 set enable-bracketed-paste on

 $ bind 'set enable-bracketed-paste on .'; echo $?; bind -v | grep 'bracketed'
 0
 set enable-bracketed-paste off

オプションの後のすべての文字列は、オプションの一部と見なされるようです(おそらく?)。

このマニュアルには、コメントが次のように記載されています。ただは行の先頭にあるので、その規則に従うことをお勧めします。代わりに、以下を使用してください。

 # Insert paste as a string rather than possibly running it
 set enable-bracketed-paste on

関連情報