Завершение вкладки Bash превращает «~» в «/ home / ___», когда это не было раньше

13

Раньше, если бы я печатал ~/biTab, раньше он превращался в ~/bin. Однако сегодня это начало превращаться ~/biTabв /home/username/bin.

Я бы предпочел, чтобы он был первым, но я не уверен, что случилось ... Я добавил скрипт для редактирования завершения bash, но удалил его ~./bashrcи перезапустил сервер.

Кто-нибудь знает, что может вызвать это? Или как я бы изменил это обратно?

РЕДАКТИРОВАТЬ Итак, я выяснил, что может вызвать это ... это связано с /etc/bash_completionи тому подобное. Когда я это делаю bind -v, это показывает, что расширение тильды отключено.

Поэтому я думаю, что если я отредактирую это (вроде хака), оно исчезнет. Но это на самом деле ничего не удовлетворяет - как эти изменения вообще произошли? Я никогда ничего не запускал как sudo, а после нескольких выключений и перезапусков такое поведение сохраняется.

Джастин Л.
источник

Ответы:

8

Вы не упоминаете, какой дистрибутив вы используете (включите эту информацию в свой вопрос), но я видел похожее поведение после запуска обновлений в моих системах.

Мое лучшее предположение - когда вы запустили обновление системы или оно запустилось автоматически, был обновлен пакет «bash-complete», который добавил это поведение. В производных 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

РЕДАКТИРОВАТЬ

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

Джордж М
источник
1
Последний бит также зависит от дистрибутива. Некоторые дистрибутивы (например, Gentoo) на самом деле делают правильно и не перезаписывают файлы, /etcесли они были изменены.
njsg
1
Производные Red Hat делают то же самое. Затем файл xxxфайла конфигурации замены вызывается, xxx.rpmnewесли изменения конфигурации не являются критическими; если изменения в конфигурации действительно требуются, то оригинал переименовывается xxx.rpmsaveи xxxявляется файлом из пакета.
vonbrand
Развернуть-тильда не работает, я просто удалил код, который сделал расширение с моего компьютера. Это, вероятно, сломается при обновлении системы, но: |
Джастин Л.