私の外付けハードドライブのディレクトリを指すホームディレクトリにシンボリックリンクを作成しようとしています。
次のように指定するとうまくいきます。
cd ~
ln -s /run/media/name/exhdd/Data/ Data
ただし、これを行うと、間違ったリンクが生成されます。
cd /run/media/name/exhdd
ln -s Data/ ~/Data
cd
入力できないリンクが作成されます。
試してみると、bashは次のように文句を言います。
bash: cd: Data: Too many levels of symbolic links
ls
カラー出力を表示するように設定すると、自宅のデータシンボリックリンクも赤で表示されます。
なぜこれが起こるのですか?このようにリンクをどのように作成できますか? (私の作業ディレクトリのディレクトリへの別のディレクトリへのシンボリックリンクを作成したいと思います。)
編集する:~によるとこれStackOverflowの答え、2番目の引数(私の場合は〜/ Data)がすでに存在し、ディレクトリの場合、ターゲットへの
ln
シンボリックリンクが生成されます。~へそのディレクトリ。
しかし、私は同じ問題に直面しました。
ln -s Data/ ~/
ベストアンサー1
これが起こったことです。相対パスを使用してシンボリックリンクを作成すると、シンボリックリンクは相対パスになります。シンボリックリンクは、ユーザーが提供したパスのみを保存します。彼らは絶対パスをフルパスとして解決しません。走る
$ pwd
/usr/bin
$ ln -s ls /usr/bin/ls2
シンボリックリンクがあるディレクトリ()に基づいて、名前付きのls2
シンボリックリンク(つまり)を作成します。上記のコマンドは、すべてのディレクトリに機能的なシンボリックリンクを生成します。/usr/bin
ls
/usr/bin/ls
/usr/bin
$ pwd
/home/me
$ ln -s ls /usr/bin/ls2
シンボリックリンクを別のディレクトリに移動すると、もはや/usr/bin/ls
。
へのシンボリックリンクを作成してData
名前を付けますData
。それ自体を指します。ディレクトリへの絶対パスを使用してシンボリックリンクを作成する必要があります。
ln -s "$(realpath Data)" ~/Data