下面是我创建目录符号链接的代码:

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

我已经创建了目录/etc/nginx.我只是想把源目录(/usr/local/nginx/conf/)的内容放在目标目录(/etc/nginx)的内容中。但是当我执行代码时,/etc/nginx包含一个名为conf的目录,而不是conf的内容。这个目录包含了我想要的内容,但在错误的位置。

为什么它把一个目录放在目标文件夹中,而不是仅仅把目录的内容放在目标文件夹中?


当前回答

这就是当目标已经存在并且是一个目录时,ln所做的事情。如果你想让/etc/nginx是一个符号链接,而不是包含一个符号链接,你最好先不要把它创建为一个目录!

其他回答

这就是当目标已经存在并且是一个目录时,ln所做的事情。如果你想让/etc/nginx是一个符号链接,而不是包含一个符号链接,你最好先不要把它创建为一个目录!

这是ln的行为,如果第二个参数是一个目录。它在其中放置一个指向第一个参数的链接。如果你想要/etc/nginx作为符号链接,你应该先删除该目录,然后运行相同的命令。

在脚本中是有用的,像这样:

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

它防止在重新创建“坏”循环符号链接后,重新运行脚本