Фон
Я слышал, что модуль readline читает ~/.inputrc
и именно так он меняет поведение нажатий клавиш в таких программах, как bash.
Вопрос
Как я могу перезагрузить это после редактирования, чтобы увидеть измененное поведение без перезапуска моей терминальной программы?
exec bash
в сеансе Bash заменит текущий сеанс оболочки новым сеансом Bash.xterm
это терминал.Ответы:
По умолчанию
C-x C-r
привязано кre-read-init-file
.См. Справочное руководство Bash для объяснения.
источник
bash -l
(оболочка, которая ведет себя как оболочка входа в систему), которая недавно инициализируется./etc/inputrc
но у меня был почти пустой,~/.inputrc
который мешал использовать один в/etc/
. Удаление~/.inputrc
заставило это прочитать/etc/inputrc
и сделать мои изменения активными.$include /etc/inputrc
в начало~/.inputrc
, это позволит избежать этой проблемы.Вы также можете перезагрузить новые записи из командной строки, используя
bind -f ~/.inputrc
. Это загрузит записи в .inputrc. Обратите внимание, что он просто выполняет загрузку, а не «перезагрузку» - поэтому он не сбрасывает строки, которые вы удалили из .inputrc.Чтобы быстро протестировать с чистого листа, просто запустите, а
bash
затем поработайте внутри этой новой вложенной оболочки (или запустите новый терминал).источник
bind -f
действительно принимает только имя файла, а не файл, поэтому что-то вродеbind -f <(echo 'one line with ~/.inputrc syntax')
(или, тривиально,bind -f <(cat ~/.inputrc)
) не будет работать. Это немного раздражает. Вы знаете, что я мог сделать в этом отношении?Это сработало для меня
bind -f ~/.inputrc
https://unix.stackexchange.com/questions/153357/inputrc-file-not-sourcing-correctly/246422#246422
источник
В .inputrc сначала выберите привязку, а после привязки
re-read-init-file
функцию:Нажмите CTRLи x, отпустите оба, нажмите CTRLи r.
источник