GNU/Linux >> Linux の 問題 >  >> Linux

シンボリック リンクが機能しないのはなぜですか?

シンボリック リンクは、完全なパスまたはリンクに対する相対パスを好む傾向があります。 ローカルに (奇妙なことに)。

17 に移動します 29 を実行します シンボリックリンクが 36 を探していることがわかります 、 45 であるべき場合 .

したがって、2 つのオプションがあります:

<オール>
  • フルパスを与える

    ln -s ~/actual/file-1.txt ~/actual/file-2.txt ~/proper
    
  • リンクを入れたいフォルダに移動し、そこからリンクします

    cd proper
    ln -s ../actual/file-1.txt ../actual/file-2.txt ./
    
  • 編集 :入力を節約するためのヒント。

    53 を実行できます

    中括弧内の項目は置き換えられ、互いの後に配置され、コマンドが作成されます

      ln -s ~/actual/file-1.txt ~/actual/file-2.txt ~/proper
      

    これにより、両方のファイルがターゲット ディレクトリにリンクされます。シェルをさらに進めるにつれて、いくつかの主要な入力を節約します。


    問題は、相対パスの使用です。完全な明示的なパスを使用してリンクの作成を指定すると、機能します。

    <ブロック引用>

    $ ln -s ~/actual/file1.txt ~/actual/file2.txt ~/proper/

    $ 猫の適切な/file1.txt

    ファイル 1

    $

    あなたの例は 60 でリンクを作成します 意図した両方の親ではなく、現在のディレクトリの下にある実際の名前のサブディレクトリを探します。


    シンボリック リンクは扱いにくい場合があります。本質的に、シンボリック リンクは、別のファイルのファイル名/パス名を含むファイルです (そして、特別な処理のためにフラグが立てられます)。リンクファイルのパス名が「76」で始まる場合 ' の場合、絶対パス名として扱われ、物事はかなり簡単です。スラッシュで始まらない場合は、相対パス名 (リンクが配置されているディレクトリからの相対パス) として扱われます。 (これは、名前にスラッシュが含まれているかどうかに関係なく当てはまります。)つまり、80 を作成しました。 「92」へのリンクとして 」、そしてそれにアクセスしようとすると、システムは 105 にアクセスしようとしました .言うべきだった

    ln –s  ../actual/file–1.txt  ../actual/file–2.txt  proper
    

    ちなみに、112 は必要ありませんでした コマンド。 125 132 を作成するには十分です .


    Linux
    1. Nullglobがデフォルトではないのはなぜですか?

    2. DebugfsのLsdelが機能しないのはなぜですか?

    3. シンボリック リンクの環境変数

    1. シンボリックリンクを圧縮するには?

    2. シンボリック リンク:このファイルにリンクしているすべてのファイルを検索します

    3. ldconfig エラー:シンボリック リンクではありません

    1. LD_LIBRARY_PATH が機能していないようです

    2. sed の正規表現で `\d` が機能しないのはなぜですか?

    3. シンボリック リンクがフォルダーではなくファイルを作成するのはなぜですか?