Answers:
您应该使用:
ln -s "$(cd . && pwd)" ~/mylink
要么:
ln -s "$(pwd -P)" ~/mylink
为当前工作目录获得正确的结果。可以像在此问题中一样在工作时更改它。
$PWD(他用来到达$(pwd -P)该目录的路径),而不是(当前目录的规范路径)。如果$PWD不再指向当前目录,那么也不会说$(pwd -P)在下一分钟。
"$PWD"如果移动当前目录,您仍然可以看到旧值。PWD仅在您设置cd或由外壳初始化时设置。
cd不能保证让$ PWD或pwd的输出到当前目录的路径。您正在尝试防范不太可能发生的事情,但是在第一种解决方案中,这不一定有效,在第二种解决方案中,它正在改变行为。
mv 在您做完之后做完了ln,那么您最终会遇到同样的情况。另一方面,如果他这样做了cd /long/logical/path/to/some/directory,则您不希望链接指向/vg0/lv1/user2/app4(规范路径),因为当/long/logical/path/to/some/directory指向其他位置时,链接将指向错误的位置。
"$PWD"POSIX shell和~0中的zsh。