由于 .bashrc 中的此行,Bash 启动缓慢。可能是什么原因造成的?

由于 .bashrc 中的此行,Bash 启动缓慢。可能是什么原因造成的?

我的.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 {} +'

后一种形式对于任何类型的文件名都可靠地起作用。

相关内容