Bash'.' vs正确的dir字符串

Tec*_*gon 2 bash

我一直在运行一些find命令,并注意到一些关于bash如何处理.vs作为字符串输入的目录的奇怪之处.

find . -type f -exec sh -c 'cd $(dirname "$0") && aunpack "$0"' {} \;
Run Code Online (Sandbox Code Playgroud)

行为完全不同于

find [current dir] -type f -exec sh -c 'cd $(dirname "$0") && aunpack "$0"' {} \;
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?

bash对待'.' 和字符串指定的目录路径不同.不是'.' 替代现在的目录?

aru*_*aku 8

什么find是将路径的其余部分附加到作为参数传递的位置.

即:如果你在dir"/ home/user/find":

find .
Run Code Online (Sandbox Code Playgroud)

打印:

.
./a
./b
Run Code Online (Sandbox Code Playgroud)

但如果你尝试:

find /home/user/find
Run Code Online (Sandbox Code Playgroud)

它打印:

/home/user/find
/home/user/find/a
/home/user/find/b
Run Code Online (Sandbox Code Playgroud)

因此,find将路径的其余部分(/ a,/ b ...)附加到参数(.或/ home/user/find).