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 {} +'
Эта последняя форма будет надежно работать для любого типа имени файла.