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

但那并不是你所要求的.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...