Linux 符号链接遍历问题

Linux 符号链接遍历问题

我正在尝试使用 USB PENDRIVE 来增加我当前构建大型库的路径。

所以,我有一个想法,在我的程序中创建一个指向 Pendrive 中文件夹的符号链接。这样它就使用笔驱动器中的空间而不是我的主存储空间。

/home/me/opencv/ <-- 这是我想要构建的产品 /home/me/opencv/build/ <-- 这是构建文件夹。

此时,没有足够的内存来构建它,所以我在中创建了这个符号链接/home/me/opencv/

mkdir /media/me/pendrive/opencv/build/

ln -s /media/me/pendrive/opencv/build/  /home/me/opencv/ -s

/home/me/opencv/这在指向我的笔式驱动器的文件夹下创建了一个链接“build” 。

这里的问题是目录遍历也指向笔式驱动器。

cd /home/me/opencv
ls

这会在 opencv 文件夹内呈现许多文件夹和文件

但如果我这样做...

cd /home/me/opencv/build
ls ..

这会呈现一个空的 opencv 文件夹,其中只有一个名为 build 的文件夹。

答案1

有一个区别逻辑身体的您遇到的目录路径。

cd /home/me/opencv/build

这会将您置于逻辑目录中,但由于符号链接/home/me/opencv/build,您实际上位于逻辑目录中。/media/me/pendrive/opencv/build

ls ..将向您显示的内容身体的父目录/media/me/pendrive/opencv

物理目录路径是解析了其所有符号链接的逻辑目录路径。如果逻辑目录路径不只包含符号链接,则它们是相同的。

另请参阅该构建目录中pwd -L和while之间的区别(并阅读手册)。pwd -Ppwd

cd还有-L-P标志(并且-L是默认值)。

答案2

你可以尝试一个绑定安装,假设你可以使用须藤或拥有 root 权限。例如,

mkdir /home/me/opencv/build
mkdir -p /media/me/pendrive/opencv/build
sudo mount -o bind /home/me/opencv/build /media/me/pendrive/opencv/build

然后,当 in 时/home/me/opencv/build,您应该看到 in..的内容/home/me/opencv/。用于sudo umount /home/me/opencv/build撤消安装。

相关内容