用作目录的符号链接
symbolic links used as directory
clones
是一个 link
nrolland at mactoasty in ~
$ la clones
lrwxr-xr-x 1 nrolland staff 11B Oct 5 16:37 clones -> Sync/clones
来自子目录
nrolland at mactoasty in ~/clones/monoidAsComputation/app
$ ls ../../../
列出~/Sync中的所有文件
而这列出了 ~
中的所有文件
cd ../../../; ls
如果我尝试将符号 link 指向上面的位置,尽管我可以 cd
指向相对位置
nrolland at mactoasty in ~/clones/monoidAsComputation/app
$ ln -s ../../../.emacs.d/reveal.js
而这会,因为 ln
将 clones
符号 link 扩展为其定义......
nrolland at mactoasty in ~/clones/monoidAsComputation/app
$ ln -s ../../../../.emacs.d/reveal.js
有什么方法可以恢复正常的参照透明性,或者至少恢复 cd
和 ln
之间的相同行为?
我在 macOS 上使用 zsh。我会尝试使用其他 shell
不确定 zsh,但以下内容适用于 bash
:
要获得与 ln
(以及任何其他命令)相同的行为,您可以在 bash
中使用 cd -P
。在您的示例中,您应该看到:
# nrolland at mactoasty in ~/clones/monoidAsComputation/app
cd -P ../../..; ls
列出 ~/Sync
中的文件,与 ls ../../../
相同。您可以使用简单的 cd ../../..
通过别名获得此行为:
alias cd='cd -P'
有关详细信息,请参阅 this answer。
clones
是一个 link
nrolland at mactoasty in ~
$ la clones
lrwxr-xr-x 1 nrolland staff 11B Oct 5 16:37 clones -> Sync/clones
来自子目录
nrolland at mactoasty in ~/clones/monoidAsComputation/app
$ ls ../../../
列出~/Sync中的所有文件
而这列出了 ~
中的所有文件cd ../../../; ls
如果我尝试将符号 link 指向上面的位置,尽管我可以 cd
指向相对位置
nrolland at mactoasty in ~/clones/monoidAsComputation/app
$ ln -s ../../../.emacs.d/reveal.js
而这会,因为 ln
将 clones
符号 link 扩展为其定义......
nrolland at mactoasty in ~/clones/monoidAsComputation/app
$ ln -s ../../../../.emacs.d/reveal.js
有什么方法可以恢复正常的参照透明性,或者至少恢复 cd
和 ln
之间的相同行为?
我在 macOS 上使用 zsh。我会尝试使用其他 shell
不确定 zsh,但以下内容适用于 bash
:
要获得与 ln
(以及任何其他命令)相同的行为,您可以在 bash
中使用 cd -P
。在您的示例中,您应该看到:
# nrolland at mactoasty in ~/clones/monoidAsComputation/app
cd -P ../../..; ls
列出 ~/Sync
中的文件,与 ls ../../../
相同。您可以使用简单的 cd ../../..
通过别名获得此行为:
alias cd='cd -P'
有关详细信息,请参阅 this answer。