$ PWD总是等于$ {$ {: - 。}:A}

时间:2014-08-09 22:00:10

标签: linux shell zsh

鉴于

  • 现代Linux / UNIX / OSX
  • zsh 5 +
  • setopt chase_links
  • PWD未设置异常

[[ "$PWD" == "${${:-.}:A}" ]]

总是如此?

1 个答案:

答案 0 :(得分:1)

不,这并非总是如此:

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(或等效)和..或{之后的符号链接段当前工作目录中的{1}}是不可能的,因为在更改目录时它们已被解析,因此如果目录仍然存在,.$PWD应该是等效的(见下文)。

在上面的示例中,在${${:-.}:A}之后,zsh将cd .更新为$PWD。但是,/home/vinc17/bar/subdir并不能使两种形式在所有情况下都相同:

cd .