Вам не нужно $include
из вашего ~/.inputrc
, так как вы можете прочитать файл inputrc в любое время с
bind -f /path/to/global/inputrc
поэтому используйте ваши обычные if [ -r file ]
с этим вместо source
.
На странице руководства сказано, что для интерактивной оболочки входа в систему она читает /etc/profile
и первое найденное из ~/.bash_profile
, ~/.bash_login
, и ~/.profile
.
Для других интерактивных оболочек он читает ~/.bashrc
, а для неинтерактивных - файл $BASH_ENV
, если таковой имеется.
В вашем случае, предположительно, вы используете неинтерактивную оболочку для эмулятора терминала, поэтому читается ~/.bashrc
. Вы можете посмотреть, что происходит, используя strace
и фиктивный дом, например, в /tmp
.
$ touch /tmp/.inputrc /tmp/.bashrc
$ (unset BASH_ENV INPUTRC HISTFILE
HOME=/tmp strace -e open -o /tmp/out bash -i)
Это показывает, что открываются следующие файлы (я удалил некоторые для краткости):
open("/tmp/.bashrc", O_RDONLY) = 3
open("/tmp/.bash_history", O_RDONLY) = -1 ENOENT
open("/tmp/.inputrc", O_RDONLY) = 3
open("/tmp/.bash_history", O_WRONLY|O_CREAT|O_TRUNC, 0600) = 3
Итак, bash будет читать .inputrc
после .bashrc
. Это имеет смысл, так как дает вам время установить INPUTRC
в вашем файле.