На моей системной вкладке Fedora 19 завершение не работает для сценариев bash, когда в начале командной строки у меня стоит sh если имя файла сценария не заканчивается на .sh .

То есть если я наберу:

$ sh file<tab>

И текущий каталог содержит:

filename

... завершение вкладки не работает.

Но если текущий каталог содержит:

filename.sh

Завершение работ.

Завершение работает для всего остального, поэтому я подозреваю, что есть специальный завершитель для команд, начинающихся с sh и он ищет файлы, заканчивающиеся на .sh .

Есть ли простой способ это исправить? Я хочу исправить это для моего пользователя, а не для всех пользователей, потому что я не хочу изменять операционную систему.

2 ответа2

8

Основные команды для настройки ваших завершений в bash :

  • Чтобы завершить только .sh файлы после (G означает « смещение»):

    complete -G '*.sh' sh
    

    Вероятно, это где-то в вашей (общесистемной) конфигурации. (Вы можете проверить с complete -pr который печатает все определения)

  • Чтобы завершить любое имя файла после sh просто выдать

    complete -A file sh
    

    -A выполняет гораздо больше возможных действий (здесь: файл), пожалуйста, ознакомьтесь с описанием complete встроенного в man bashbuiltins для гораздо большего количества опций.

Для окончательного исправления этого поведения поместите последнюю команду также в ~/.bashrc .

0

Нет, там должно быть что-нибудь нестандартное. Ничего подобного не видел ни в одной версии Linux. Завершение вкладки работает как положено.

Кстати, какой смысл

$ sh filename<tab>

в любом случае, если у вас есть "имя файла" в вашем каталоге?

Может быть, вы немного запутались, как будто у вас есть два одинаковых имени файла в каталоге, завершение продолжается только до тех пор, пока символы не станут одинаковыми, а затем отобразятся все доступные параметры.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .