加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 01:43:29 所属栏目:Linux 来源:网络整理
导读:特定 现代Linux / UNIX / OSX zsh 5 setopt chase_links PWD没有设置异常 是 [[ "$PWD" == "${${:-.}:A}" ]] 总是如此吗? 解决方法 不,这并非总是如此: xvii:~ ls -l foolrwxrwxrwx 1 vinc17 vinc17 10 2014-07-05 01:12:06 foo - bar/subdir/xvii:~ bashv
特定

>现代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在没有符号链接段的当前工作目录中启动,那么当前工作目录将永远不会在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 directory

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读