Pregunta:
Mi archivo .bashrc
contiene una línea a este efecto:
alias prog="/path/to/script.sh $(find $(pwd) -name prog)"
Cuando comento esta línea, Bash se inicia casi instantáneamente cuando abro una nueva terminal. Con esta línea, hay un retraso de 4-5 segundos antes de que aparezca el cursor.
La eliminación de los comandos anidados $(pwd)
, etc. también lo acelera de nuevo. ¿Por qué está pasando esto? ¿Puedo seguir usando comandos anidados de alguna manera?
Respuesta:
Debido a que la sustitución del comando está entre comillas dobles, se evalúa en el momento en que se define el comando. Esto hace que find
revise el contenido de su disco duro mientras se ejecuta .bashrc
.
Usted, por el contrario, parece querer que se evalúe en el momento de su uso. En ese caso, use comillas simples:
alias prog='/path/to/script.sh $(find "$(pwd)" -name prog)'
Tenga en cuenta que este alias fallará si alguno de los archivos encontrados tiene espacios en blanco en sus nombres. Para evitar eso:
alias prog='find . -name prog -exec /path/to/script.sh {} +'
Esta última forma funcionará de manera confiable para cualquier tipo de nombre de archivo.