Я использую, среди прочего, Bash 4.2.37 на Linux Mint 14.
Когда я автоматически заполняю имя переменной среды, печатая Tab, оно расширяется до имени переменной, за которым следует пробел.
Если значением переменной является имя каталога, я хочу, чтобы оно расширилось до имени переменной, за которым следует /
.
Например, если я наберу:
$ ls $HOM<tab>
он расширяется до:
$ ls $HOME _
где _
отмечает местоположение курсора. Проблема в том, что я обычно хочу продолжать вводить имя некоторого файла или каталога в моем домашнем каталоге, что означает, что я должен набрать, backspaceа затем /
.
Поэтому я хочу расширить вышеприведенное:
$ ls $HOME/_
То же самое происходит, когда я набрал полное имя переменной; после ls $HOME
, tabдобавляет пробел, и я хочу добавить /
.
(И, конечно, я не хочу добавлять a, /
если значение переменной не является именем каталога.)
Есть ли какой-то способ, которым я могу сказать bash вести себя так, как я хочу, с помощью команд bash или путем обновления моего $HOME/.inputrc
?
Примечание: я специально ищу способ заставить tabсебя вести себя так, как я хочу. Способы достижения одинакового поведения при разных нажатиях клавиш были бы интересны, но не отвечали бы на мой вопрос.
(Я отключил /etc/profile.d/bash_completion.sh
в своей системе, потому что она плохо взаимодействует с set -o nounset
. Быстрый эксперимент показывает, что это, вероятно, не относится к моему вопросу.)
Кстати, tcsh делает это: учитывая переменную окружения $FOOBAR
, типизация $FOOBA<tab>
расширяется до $FOOBAR/
того, ссылается ли она на каталог $FOOBAR
(с пробелом), если нет. Нет, этого недостаточно, чтобы убедить меня вернуться к tcsh. Zsh делает это тоже.