Разборка OpenBSD

Вам не нужно $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 в вашем файле.

3
29.03.2016, 17:46
0 ответов

Теги

Похожие вопросы