Автодополнение Bash для путей и ничего больше

Автодополнение Bash для путей и ничего больше

Как отключить автодополнение bash для всего, кроме путей файловой системы?

Но даже в случае с путями я не хочу, чтобы что-либо интерпретировалось.

Например, если я сделаю:

# sh -f fo<tab>

и есть файл foo.txt, он не работает, хотя если бы файл был foo.sh, то работал бы. Я предполагаю, что bash пытается мне "помочь" здесь. Я давно использую Linux, и я не хочу, чтобы автодополнение bash делало что-то, предполагающее, что знает, о чем я думаю. Я не хочу, чтобы оно искало zip-файлы или угадывало имена хостов. Мне нужно просто автодополнение имени пути и ничего больше.

решение1

bashимеет встроенную команду complete, которая управляет поведением автозаполнения текущей оболочки. Возможно, ваш дистрибутив или системный администратор организовали настройку интерактивных оболочек, поместив эти completeкоманды в настроенные файлы запуска (традиционно /etc/profile, /etc/bash.bashrc, ~/bash_profile, ~/bash_login, ~/.profile, ~/.bashrc).

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

Чтобы отключить «интеллектуальное» автозаполнение только для одного экземпляра интерактивного сеанса, выполните:

complete -r

в этой сессии.

Связанный контент