나는 그것을 내 홈 폴더 밖으로 파일을 INPUTRC
이동하는 데 사용합니다. .inputrc
예전에는 작동했지만(나처럼 GNU bash, version 5.1.4
) bash에서는 더 이상 존중 version 5.1.16
되지 INPUTRC
않습니다.
$ which $SHELL
/usr/bin/bash
$ $SHELL --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2020 Free Software Foundation, Inc.
. . .
$ env | grep INPUTRC
INPUTRC=/home/foo/bin/.inputrc
$ ls ~/.inputrc
ls: cannot access '/home/foo/.inputrc': No such file or directory
- 내
INPUTRC
파일에 다음이 포함되어 있습니다.
set echo-control-characters off
set completion-ignore-case on
그러나 어느 쪽도 존중받지 못했습니다.
~/.inputrc
위의 두 줄을 포함하는 파일을 생성하면 둘 다 작동합니다.~/.inputrc
my를 가리키는 파일을 생성하면/home/foo/bin/.inputrc
두 경우 모두 괜찮습니다.그러나
~/.inputrc
파일을 삭제하고INPUTRC
다시 단독으로 사용하면 두 가지 상황 모두 더 이상 작동하지 않습니다.
그래서,
- 내가 사용하고 있는 bash 버전에 문제가 있나요?
- bash가 명예로운지 어떻게 알 수 있나요
INPUTRC
? - 이 문제를 디버깅하는 것을 어떻게 권장하시나요?
고쳐 쓰다:
실제 원인을 찾을 수 있는 방법을 제공한 @meuh에게 감사드립니다. (질문을 게시하기 전에도) 제가 알아낸 것처럼 이렇게 하면 bind -f /home/foo/bin/.inputrc
터미널이 완전히 잠기고 "^C"로만 응답합니다 reset
. 그것을 입력하고 Enter 키를 눌러도 문제가 해결되지 않지만 내 두 줄 버전에서는 문제가 bind -f
해결됩니다. 어쩌면 내 오래된 .inputrc 파일(>20년 전)이 새로운 bash에 문제를 일으키고 INPUTRC를 사용하면 ~/.inputrc보다 더 명확하게 문제가 발생할 수 있습니다.
시행착오를 거쳐 다음과 같이 문제의 원인을 찾아냈습니다.
$ cat .inputrc.nok
set editing-mode emacs
set horizontal-scroll-mode Off
set keymap emacs-meta
set echo-control-characters off
set completion-ignore-case on
그러다가, 즉시,
bind -f .inputrc.nok
터미널 세션을 잠그고- 그것을 가리키는 것은
INPUTRC
아무런 효과가 없습니다.
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu Jammy Jellyfish (development branch)
Release: 22.04
Codename: jammy
$ apt-cache policy bash
bash:
Installed: 5.1-6ubuntu1
Candidate: 5.1-6ubuntu1
Version table:
*** 5.1-6ubuntu1 500
500 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages
100 /var/lib/dpkg/status
업데이트 2:
실제로 이것은 Ubuntu Jammy의 문제만이 아니라 Ubuntu 18.04.1로 돌아가서 정확히 동일한 동작을 발견했습니다. 그러나 @Kusalananda는 모든 것이 괜찮으므로 Ubuntu를 사용하는 사람이 있다면 시도해 보십시오. 감사해요.