bash - 在另一个目录中建立链接时符号链接(symbolic link)不起作用?

标签 bash relative-path symlink

哇,我以前从来没有真正使用过这么多符号链接(symbolic link),但这真是令人难以置信:

bash-3.2$ echo "weird" > original.txt
bash-3.2$ mkdir originals
bash-3.2$ mv original.txt originals/
bash-3.2$ cat originals/original.txt 
weird
bash-3.2$ mkdir copies
bash-3.2$ ln -s originals/original.txt copies/copy.txt
bash-3.2$ cat copies/copy.txt 
cat: copies/copy.txt: No such file or directory
bash-3.2$ ls copies/copy.txt 
copies/copy.txt
bash-3.2$ ls -l copies/copy.txt 
lrwxr-xr-x  1 zach  staff  22 Dec 22 01:23 copies/copy.txt -> originals/original.txt
bash-3.2$ cat originals/original.txt 
weird
bash-3.2$ cat copies/copy.txt 
cat: copies/copy.txt: No such file or directory
bash-3.2$ cd copies/
bash-3.2$ cat copy.txt 
cat: copy.txt: No such file or directory

为什么我不能在副本目录中 cat 符号链接(symbolic link)?

如果我从副本/中创建符号链接(symbolic link),我可以很好地捕捉它。如果我在当前目录中创建符号链接(symbolic link),我也可以 cat 它就好了。如果我在当前目录中创建符号链接(symbolic link),然后将其移动到 copies/,我会得到“copies/copy.txt:没有这样的文件或目录”。

最佳答案

如果您创建符号链接(symbolic link)的相对路径,它会将其存储为相对符号链接(symbolic link)。符号链接(symbolic link)是相对于链接所在的位置,而不是它创建或打开的位置。


请使用绝对路径或相对于链接的路径。

改变:

ln -s originals/original.txt copies/copy.txt

收件人:

# absolute
ln -s /path/to/originals/original.txt copies/copy.txt

# relative
cd copies
ln -s ../originals/original.txt copy.txt

关于bash - 在另一个目录中建立链接时符号链接(symbolic link)不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8601988/

相关文章:

java - 扫描 JAR 中的文件夹

java - 在 Java 中解析目录符号链接(symbolic link)

linux - 如何使 GNU/Make 停止取消对目录的符号链接(symbolic link)的引用

bash - bash中的视频方向检测

java - 如何在导入的Java项目中加载文件?

linux - 如何将 awk 变量传递给 bash 命令

python - Python 中尊重命名空间的相对导入

clearcase - 如何: move symlink keeping the target

bash - 寻找 shell 重定向交错行为的解释

linux - 如何获得一系列文件中具有最大差异的两个文件