bash Завершение имени файла зависает, потому что он ищет в несвязанных каталогах несвязанные файлы - PullRequest
0 голосов
/ 24 марта 2020

Когда я набираю

(module load /scratch/userName/productName/modules/d

, за которым следует вкладка для получения

(module load /scratch/userName/productName/modules/debug

bash, в течение некоторого времени зависает и не принимает ввод. Если я использую strace для отладки, я вижу, что bash вызывает stat () для более чем 5000 (не связанных) файлов в 800 (не связанных) каталогах. Кто-нибудь может мне это объяснить? Или, что еще лучше, объясните, как указать bash выполнять поиск только в указанном каталоге?

edit: Каталог модулей существует и содержит только два обычных файла (отладка и выпуск). Все родительские каталоги являются обычными каталогами.

edit: я думаю, это как-то связано со способностью bash пересылать завершение имени файла используемому клиенту. В данном случае это модуль, но я также видел его для git.

1 Ответ

0 голосов
/ 24 марта 2020

Кто-то где-то зарегистрировал некоторую функцию bash, чтобы выполнить завершение имени файла для клиентского модуля. Чтобы отключить это, я добавил следующую строку в мой ~ / .bashr c:

complete -o default module

Спасибо { ссылка } за подсказку!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...