Bash запускается медленно из-за этой строки в.bashrc. Что может вызвать это?

Мой .bashrc Файл содержит строку с этим эффектом:

alias prog="/path/to/script.sh $(find $(pwd) -name prog)"

Когда я закомментирую эту строку, Bash запускается практически мгновенно, когда я открываю новый терминал. В этой строке задержка составляет 4-5 секунд, прежде чем появляется мой курсор.

Удаление вложенных команд $(pwd)и т. д. также ускоряет его. Почему это происходит? Можно ли как-то использовать вложенные команды?

1 ответ

Решение

Поскольку подстановка команды находится в двойных кавычках, она оценивается во время определения команды. Это вызывает find просматривать содержимое вашего жесткого диска во время .bashrc бежит.

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

alias prog='/path/to/script.sh $(find "$(pwd)" -name prog)'

Обратите внимание, что этот псевдоним потерпит неудачу, если у любого из найденных файлов будут пробелы в именах. Чтобы избежать этого:

alias prog='find . -name prog -exec /path/to/script.sh {} +'

Эта последняя форма будет надежно работать для любого типа имени файла.

Другие вопросы по тегам