web-dev-qa-db-ja.com

Ubuntuでディレクトリのシンボリックリンクを作成する

以下はディレクトリのシンボリックリンクを作成するための私のコードです:

Sudo ln -s /usr/local/nginx/conf/ /etc/nginx

私はすでにディレクトリ/etc/nginxを作成しました。ソースディレクトリ(/usr/local/nginx/conf/)の内容をターゲットディレクトリ(/etc/nginx)の内容に含めるだけです。しかし、コードを実行すると、/etc/nginxにはconfの内容の代わりにconfという名前のディレクトリが含まれています。そのディレクトリは私が欲しい内容を含んでいますが、間違った場所にあります。

ディレクトリの内容をターゲットフォルダに配置するのではなく、ディレクトリをターゲットフォルダに配置したのはなぜですか。

241
user959129

これは、2番目の引数がディレクトリの場合のlnの動作です。それは最初の引数 へのリンクをその内側に配置します /etc/nginxをシンボリックリンクにしたい場合は、最初にそのディレクトリを削除してから同じコマンドを実行する必要があります。

246
FatalError

ターゲットが既に存在し、それがディレクトリである場合、lnは文書化されています。 /etc/nginx contains aシンボリックリンクではなく be シンボリックリンクにしたい場合は、最初にディレクトリとして作成しない方がいいでしょう。

30
Celada

スクリプトではこのような何か便利です:

if [ ! -d /etc/nginx ]; then ln -s /usr/local/nginx/conf/ /etc/nginx > /dev/null 2>&1; fi

スクリプトを再実行した後に「悪い」ループのシンボリックリンクを再作成する前に防止します。

9
kayn