gpt4 book ai didi

linux - $PWD 是否总是等于 ${${ :-. }:A}

转载 作者:IT王子 更新时间:2023-10-29 00:41:36 27 4
gpt4 key购买 nike

给定

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

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

总是正确的?

最佳答案

不,这并不总是正确的:

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 在没有符号链接(symbolic link)段的当前工作目录中启动,则当前工作目录将永远不会在 cd(或等效的)和 之后有符号链接(symbolic link)段。 .. 在当前工作目录中也是不可能的,因为它们在更改目录时已解析,因此 $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 directory

关于linux - $PWD 是否总是等于 ${${ :-. }:A},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25223490/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com