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