假设我执行以下操作:
cd /some/path
ln -s /target/path symbolic_name
Run Code Online (Sandbox Code Playgroud)
如果那么做:
cd /some/path
cd symbolic_name
pwd
Run Code Online (Sandbox Code Playgroud)
我得到:
/some/path/symblic_name
Run Code Online (Sandbox Code Playgroud)
并不是:
/target/path
Run Code Online (Sandbox Code Playgroud)
有没有办法让shell“完全解析”一个符号链接(即更新CWD等),就好像我已经直接做了:
cd /target/path
Run Code Online (Sandbox Code Playgroud)
?
我需要运行一些似乎“知道”或“敏感”我如何到达目标路径的程序,我希望他们认为我到达目标路径就像cd /target/path直接完成一样。
我有一个符号链接
~/link -> ~/a/really/long/path
Run Code Online (Sandbox Code Playgroud)
当我做
cd ~/link
cd ..
Run Code Online (Sandbox Code Playgroud)
它需要我
~
Run Code Online (Sandbox Code Playgroud)
但我想去
~/a/really/long
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
我正在使用 bash。
我已经创建了带有目录(Blink)绝对路径的符号链接,例如以下树:
$ ls -l /tmp/A
total 0
lrwxrwxrwx 1 root root 6 Apr 3 12:27 Blink -> /tmp/B
-rw-r--r-- 1 root root 0 Apr 3 12:27 foo
$ ls -l /tmp/B
total 0
-rw-r--r-- 1 root root 0 Apr 3 12:27 bar
Run Code Online (Sandbox Code Playgroud)
然后我转到 /tmp/A 并将目录更改为 Blink:
$ cd /tmp/A
$ pwd
/tmp/A
$ cd Blink
$ pwd
/tmp/A/Blink
Run Code Online (Sandbox Code Playgroud)
cd ..返回我,/tmp/A
但如果我输入例如ls ../foo我会得到错误:
ls: ../foo: No such file or directory
Run Code Online (Sandbox Code Playgroud)
内置 cd 命令根据需要解析路径,但外部 ls 将 .. 视为 …