Когда вы печатаете неверную команду, говорите, что хотите сделать:
$ cd ..
$ ls
Но вместо этого вы набираете слишком быстро и в итоге нажимаете ввод между l и s, так что вы получаете:
$ cd ..
$ l
sbash: l: command not found...
Это происходит все время, конечно, когда мы печатаем быстро. Что меня интересует, так это источник 2,5-секундной (в моей системе) паузы после появления на экране неверного текста команды. Мне кажется, он мгновенно распознает плохую команду, печатает сообщение об ошибке, но потом ради интереса ждет 2,5 секунды, прежде чем вернуть меня в командную строку. Что вызывает это? Есть ли способ исправить это? Это немного раздражает, но я бы хотел избавиться от этого. :)
Изменить: Запуск системы Fedora 16
Ответы:
Этот тип поведения вызван тем, что инструмент часто устанавливается в некоторых дистрибутивах, которые подключаются к bash. Этот хук делает так, что если вы пытаетесь запустить команду, а команда не существует, то bash будет искать файлы, доступные в настроенных репозиториях, и сообщать вам, какой пакет вам нужно установить, чтобы получить эту команду.
Если вы не работаете в системе Debian, вам нужно просмотреть профили загрузочных файлов bash и т. Д. И посмотреть, определяет ли что-нибудь названную функцию
command_not_found_handle
. Если эта функция bash определена, то она будет вызываться всякий раз, когда вы запускаете команду, и соответствующая программа не может быть найдена в вашем пути поиска. Если вы запуститеtypset | less
и просмотрите выходные данные, вы увидитеcommand_not_found_handle()
функцию, если она была определена.В Debian / Ubuntu пакет, обеспечивающий это поведение, не найден . Если вы очистите это, то вы отключите поиск, который замедляет работу.
Вот пример
Точное время, конечно, будет другим для вас. Я провел свои тесты на довольно мощном сервере.
источник
Часть вопроса была: "Есть ли способ исправить это (в Fedora)?" Там есть: внизу вашего .bashrc файла добавьте команду
Возможно, вы захотите сделать это в конце вашего .bashrc (или близко к нему), потому что вы можете запустить / etc / bashrc или другие скрипты bash в верхней части вашего .bashrc.
источник
На fedora этим поведением можно управлять, изменив
/etc/PackageKit/CommandNotFound.conf
файл конфигурации.Параметр
SoftwareSourceSearch=false
избавит от задержки, так как он не будет пытаться найти пакет с отсутствующей командой, используя менеджер пакетов.Вы также можете изменить время ожидания поиска пакета, изменив
MaxSearchTime=2000
параметр, чтобы указать количество миллисекунд, которые вы готовы ждать, пока поиск пакета не вернет совпадение. Я считаю, что значение по умолчанию в 2 секунды недостаточно для возврата любых совпадений и просто вызывает нежелательную задержку, когда у вас есть опечатка.Либо увеличьте,
MaxSearchTime
чтобы обеспечить полезный вывод, либо отключите,SoftwareSourceSearch
чтобы полностью исключить задержку.источник