Я використовую, серед іншого, баш 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 робить це також.