2013-07-19 18 views
18

私はLinuxのTorブラウザパッケージをダウンロードしました。これは自己完結型のフォルダです。実行スクリプトへのシンボリックリンクを作成しました:作成直後にシンボリックリンクが破損しました

$ ln -s torbrowser/start-tor-browser ~/bin/torbrowser 

ただし、作成時にリンクが切断されました。私がしたのはその命令だけだった。私はlsをして得ました:

lrwxrwxrwx 1 synful synful 28 Jul 18 21:52 torbrowser -> torbrowser/start-tor-browser 

... torbrowser/start-tor-browserは755の権限を持っていたので、これは奇妙です。また、私はfileを走っ:

$ file ~/bin/torbrowser 
bin/torbrowser: broken symbolic link to `torbrowser/start-tor-browser' 

私はこれをテストするために新しいbashスクリプトおよびシンボリックリンクを作って、そのような問題を抱えていません。なぜ私はスタート・トゥ・ブラウザでしか起こっていないのか分かりません。これは通常の権限を持っていて、普通のbashスクリプト(fileコマンドにしても)です。

...任意のアイデアですか?

答えて

34

それは

ln -s SOURCE TARGET 

が象徴SOURCE文字列にリンクされているTARGETと呼ばれるシンボリックリンクを作成することを知っておくことが重要です。 SOURCEが相対パス(つまり、/で始まらない)の場合、TARGETが入っているディレクトリーを基準にして解釈されます。絶対パスであれば絶対パスです。それがパスではない文字列であるか、または存在しないパスまたはファイルを含む文字列であるか、そうでなければ有効なパス文字列でない場合、問題ありません。 ln -sは、SOURCEが存在するか、有効なパスであるかをチェックしません。あなたはdirentに欲しい短い文字列をほとんど格納することができます。

だから、あなたがこれを行うとき:あなたは何をしているか

$ ln -s torbrowser/start-tor-browser ~/bin/torbrowser 

を大まかに、次のとおりです。

  1. は名前torbrowserであなたのbinサブディレクトリ内のディレクトリエントリを作成します。
  2. 新しいシンボリックリンクが円形である(相対)パスへのシンボリックリンク(シンボリックリンク)ディレクトリエントリ新しいtorbrowser/start-tor-browser

ことを確認してください。 ~/bin/torbrowser~/bin/torbrowser/start-tor-browserにリンクされています。これは、シンボリックリンクを解決するためにシンボリックリンクに従わなければならないことを意味します。それを使用しようとすると、次のように表示されます。

$ cat ~/bin/torbrowser 
cat: /home/joshlf13/bin/torbrowser: Too many levels of symbolic links 
$ 

時には、相対パスにシンボリックリンクする機能は非常に便利です。一般的な用途は、バージョン番号を取り除くされています

$ ln -s apps/my_fancy_app_v2.63.1 apps/my_fancy_app 

は今だけでなく、私はそれがバージョン文字列です覚えることなく、my_fancy_appを呼び出すことができ、私はまた、シンボリックリンクを壊すことなく、別の場所にフォルダ全体を移動することができます。

$ mv apps /usr/local/apps 

しかし、あなたの例のように、絶対パスにシンボリックリンクする必要があります。

ファイル操作で使用される実際のアクセス許可は実際のファイルのアクセス許可であるため、シンボリックリンクのアクセス許可は常にlrwxrwxrwxです。 (シンボリックリンクを誰もが読むことができると考えることができますが、これはあまり真実ではありません。ポイント彼らはその名前のファイルにはアクセスできません場合でも、に

+0

を持っています。ありがとう! – joshlf

+0

壊れたリンクを取得しないようにするには、完全なパスを入れることが重要です。 –

0
LNのために与えられた

上記の用法:。

が正しい

LN -s SOURCEのTARGETが、混乱を参照するときマニュアルページ:

ln [OPTIO N] ... [-T] TARGETのLINK_NAME(第一形式) 'ターゲット' として

は別の意味も最適です

+0

cp: 'cp existing new'と一貫しています。同様に: 'ln -s existing new' – Hrobky

関連する問題