使 cd 跟随符号链接

row*_*ran 87 bash cd-command symlink

我将我的代码作为 sshfs 挂载在我的主目录中,但是层次结构很难记住,所以我在我的主目录中创建了一个指向该目录的符号链接。有没有办法当我 cd 到那个符号链接时,而不是 cd 到符号链接,它实际上会 cd 到那个目录?

如果问题不清楚,这里是我正在寻找的一个例子:

foo@foo:~$ ls -l
lrwxrwxrwx  1 foo      foo              5 2012-11-14 08:20 foo -> bar/bar

foo@foo:~$ cd foo
foo@foo:~/bar/bar/$
Run Code Online (Sandbox Code Playgroud)

Chr*_*own 125

对于 的任何 POSIX 实现cd,您都可以使用该-P选项来执行此操作。

$ help cd
...
    -P      use the physical directory structure without following symbolic links
...
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到它的实际效果:

$ mkdir foo
$ ln -s foo bar
$ cd -P bar
$ pwd
/tmp/tmp.WkupF2Ucuh/foo
Run Code Online (Sandbox Code Playgroud)

如果您希望这是默认行为,您可以为 创build一个别名cd,如下所示:

alias cd='cd -P'
Run Code Online (Sandbox Code Playgroud)

...或使用set -o physical. 对于 tcsh,等效的命令是set symlinks=chase.

  • 您确实有 POSIX 实现。POSIX 是一个标准基础,在上面添加了一些东西或进行了一些更改,“使用任何 POSIX 实现”意味着这几乎可以在任何地方工作,即它不是 bash 或 ksh 特定的东西。 (2认同)