내 구성 라인이 있습니다 .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