このコマンドは通常はうまく機能しますが、このコマンドはln -si GIT/Settings/session ./.mozilla/firefox/foo.default/
ファイルとして表示される何らかの壊れたリンクを作成するだけです。
何故ですか?
sudo ln -fs
動作しません。
それを実行する方法について何か提案はありますか?
前もって感謝します。
答え1
奇妙に聞こえるかもしれないが、
ln -si ../../../GIT/Settings/session ./.mozilla/firefox/foo.default/
希望どおりに動作します。ここでの原則は、リンクを配置する場所を基準にしてリンク ターゲットを指定する必要があるということです。
UnixおよびUnix系ファイルシステムでは、シンボリックリンクは実際にはパスを内容とする特別なファイルです。次のように入力すると、次の場所にシンボリックリンクが作成されます。ln path filename
ファイル名その内容はパス例えば、次のように入力すると
ln foo bar/baz
すると、システムはパス「foo」を含むbar/bazというリンクを作成します。ただし、そのリンクは壊れます。リンクを逆参照しようとすると、カーネルはそれを相対的に逆参照します。リンクディレクトリ– この場合は bar です。カーネルは存在しない bar/foo を検索します。
一方、次のように入力すると
ln ../foo bar/baz
すると、システムはパス "../foo" を含む bar/baz という名前のリンクを作成します。このリンクを逆参照すると、カーネルは存在する (そして実際に必要な) bar/../foo を探します。
答え2
ソースファイルとターゲットファイルのフルパスを使用できます
ln -s (full path to /foo) (full path to bar/baz)