给定的
zsh 5+setopt chase_linksPWD没有被异常设置是
[[ "$PWD" == "${${:-.}:A}" ]]一直都是真的?
发布于 2014-08-11 00:40:46
不,这并不总是正确的:
xvii:~> ls -l foo
lrwxrwxrwx 1 vinc17 vinc17 10 2014-07-05 01:12:06 foo -> bar/subdir/
xvii:~> bash
vinc17@xvii:~$ cd foo
vinc17@xvii:~/foo$ pwd
/home/vinc17/foo
vinc17@xvii:~/foo$ zsh -f
xvii% echo $PWD
/home/vinc17/foo
xvii% setopt chase_links
xvii% echo $PWD
/home/vinc17/foo
xvii% echo "${${:-.}:A}"
/home/vinc17/bar/subdir
xvii% pwd
/home/vinc17/bar/subdir但是,如果zsh是在没有符号链接段的当前工作目录中启动的,那么当前工作目录在cd (或等效的)之后永远不会有符号链接段,而当前工作目录中的..或.也是不可能的,因为它们在更改目录时被解析,因此如果目录仍然存在,则$PWD和${${:-.}:A}应该是等效的(参见下面)。
在上面的示例中,在cd .之后,zsh将$PWD更新为/home/vinc17/bar/subdir。但是,cd .并不能使这两种表单在所有情况下都等价:
xvii% mkdir my_dir
xvii% cd my_dir
xvii% rmdir ../my_dir
xvii% echo $PWD
/home/vinc17/my_dir
xvii% echo "${${:-.}:A}"
/home/vinc17/my_dir
xvii% pwd
/home/vinc17/my_dir
xvii% cd .
xvii% echo $PWD
/home/vinc17/my_dir
xvii% echo "${${:-.}:A}"
xvii% pwd
.
xvii% echo "$(realpath .)"
.: No such file or directoryhttps://stackoverflow.com/questions/25223490
复制相似问题