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/これにより、私のペンドライブを指すフォルダの下に「ビルド」リンクが作成されました。

ここでの問題は、ディレクトリナビゲーションがペンドライブも指していることです。

cd /home/me/opencv
ls

これはopencvフォルダ内の多くのフォルダとファイルをレンダリングします。

しかし、私はこれを行うと...

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

これにより、buildという名前のフォルダが1つしかない空のopencvフォルダがレンダリングされます。

答え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

あなたは試すことができます製本使用できると仮定してインストールします。Sudoまたは、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

その後、入力すると内容が/home/me/opencv/build表示されます。インストールをキャンセルするために使用されます。../home/me/opencv/sudo umount /home/me/opencv/build

関連情報