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
。