在Ubuntu中创建一个目录的符号链接

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

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

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

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

467646 次浏览

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

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

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

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

它可以防止在重新创造“坏”之前;循环符号链接后,重新运行脚本