微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – $PWD总是等于$(realpath.)

特定

>现代Linux / UNIX / OSX(带有realpath)
> bash 4(即使在OSX上)

"$PWD" == "$(realpath .)"

总是如此吗?

解决方法:

很容易测试,情况并非总是这样.

$mkdir /tmp/realdir
$cd /tmp/realdir
$echo $PWD
/tmp/realdir
$ln -s realdir /tmp/fakedir
$cd /tmp/fakedir
$echo $PWD
/tmp/fakedir
$realpath .
/tmp/realdir

所以不,$PWD并不总是和$(realpath.)相同.

bash manual表示PWD变量由内置cd命令设置.认的behaviour of cd是:

symbolic links are followed by default or with the -L option

这意味着如果您进入符号链接,变量将相对于符号链接进行解析,而不是相对于物理路径.您可以使用-P选项更改cd命令的此行为.这将导致它报告PWD变量中的物理目录:

$cd -P /tmp/fakedir
$echo $PWD
/tmp/realdir

您可以使用-P选项更改bash的认行为:

$set -P
$cd /tmp/fakedir
$echo $PWD
/tmp/realdir
$set +P
$cd /tmp/fakedir
$echo $PWD
/tmp/fakedir

当然,尽管您可以在执行cd后将所需的任何内容分配给PWD变量,但它会获取该值:

$cd /tmp/fakedir
$PWD=/i/love/cake
$echo $PWD
/i/love/cake

但那并不是你所要求的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐