特定
realpath)bash 4+(即使在OSX上)是
"$PWD" == "$(realpath .)"
Run Code Online (Sandbox Code Playgroud)
总是如此吗?
很容易测试,情况并非总是这样.
$ 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
Run Code Online (Sandbox Code Playgroud)
所以不,$PWD并不总是一样的$(realpath .).
所述的bash手册表明PWD变量由内置的设置cd命令.cd的默认行为是:
默认情况下使用符号链接或使用-L选项
这意味着如果您进入符号链接,变量将相对于符号链接进行解析,而不是相对于物理路径.您可以cd使用该-P选项更改命令的此行为.这将导致它报告PWD变量中的物理目录:
$ cd -P /tmp/fakedir
$ echo $PWD
/tmp/realdir
Run Code Online (Sandbox Code Playgroud)
您可以使用以下-P选项更改bash的默认行为:
$ set -P
$ cd /tmp/fakedir
$ echo $PWD
/tmp/realdir
$ set +P
$ cd /tmp/fakedir
$ echo $PWD
/tmp/fakedir
Run Code Online (Sandbox Code Playgroud)
当然,尽管您可以PWD在执行a之后将所需的任何内容分配给变量cd,但它会获取该值:
$ cd /tmp/fakedir
$ PWD=/i/love/cake
$ echo $PWD
/i/love/cake
Run Code Online (Sandbox Code Playgroud)
但那并不是你所要求的.
| 归档时间: |
|
| 查看次数: |
482 次 |
| 最近记录: |