
私の設定ラインがあります.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