Завершення вкладки Bash розширює "~" на "/ home / ___", коли не було раніше


13

Раніше, якщо я набрав ~/biTab, раніше, це перетвориться ~/bin. Тим НЕ менше, сьогодні він почав повертати ~/biTabв /home/username/bin.

Я вважаю за краще це колишнє, але я не впевнений, що сталося ... Я додав сценарій, щоб відредагувати своє завершення bash, але я видалив його зі свого ~./bashrcта перезапустив сервер.

Хтось знає, що може спричинити це? Або як би я змінив це назад?

EDIT Отже, я дізнався, що може спричинити це ... це стосується /etc/bash_completionі подібних речей. Коли я це роблю bind -v, він показує, що розширення тильди вимкнено.

Тому я думаю, що якщо я відредагую це (на кшталт хак), воно піде. Але це насправді нічим не задовольняє - як ця зміна навіть сталася в першу чергу? Я ніколи нічого не запускав sudo, і після декількох відключень та перезавантажень така поведінка зберігається.

Відповіді:


8

Ви не згадуєте, який дистрибутив використовуєте (будь-ласка, включіть цю інформацію у своє запитання), але я спостерігав подібну поведінку після запуску оновлень у моїх системах.

Я найкраще здогадуюсь, коли ви запускали оновлення системи або якщо воно запускалося автоматично, пакет "bash-завершення" був оновлений, що додало цієї поведінки. У похідних Red Hat ви можете знайти документацію на пакунки в /usr/share/doc/PACKAGENAME. У моєму /usr/share/doc/bash-completion-1.3/CHANGES, нові зміни перераховані через формат журналу змін.

Замість зміни /etc/bash_completion, яка потенційно може бути перезаписана під час наступного оновлення пакета, ви можете створити, ~/.inputrcщоб вимкнути розширення тильди. Я підтвердив, що bash_completion-1.3.6 буде вшановувати це у своєму вікні Fedora 16.

set expand-tilde off

EDIT

Ваш пробіг може змінюватися в залежності від ~/.inputrc. Bash має функції, які можуть змінити таку поведінку залежно від того, що ви намагаєтеся виконати (наприклад, програма проти файлу чи каталогу). Це обговорення на Super User SE вирішує подібне питання при автоматичному завершенні vimкоманди. У цьому випадку оригінальний плакат вирішив його питання , додавши до нього спеціальну функцію ~/.bashrc.


1
Останній біт також залежить від дистрибутива. Деякі дистрибутиви (наприклад, Gentoo) насправді роблять правильно, і не перезаписують файли, /etcякщо вони були змінені.
njsg

1
Похідні Red Hat також роблять це. Файл конфігураційного файла заміни xxxвикликається, xxx.rpmnewякщо зміни конфігурації не є критичними; якщо зміни конфігурації дійсно потрібні, то оригінал перейменований xxx.rpmsaveі xxxє файлом із пакета.
фонбранд

expand-tilde не працює, я закінчила лише видалення коду, який зробив розширення з мого комп'ютера. Він, ймовірно, зламається при оновленнях системи, але: |
Джастін Л.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.