下面是我创建目录符号链接的代码:
sudo ln -s /usr/local/nginx/conf/ /etc/nginx
我已经创建了目录/etc/nginx
。我只是希望源目录(/usr/local/nginx/conf/
)的内容位于目标目录(/etc/nginx
)的内容中。但是当我执行代码时,/etc/nginx
包含一个名为conf
的目录,而不是conf
的内容。该目录包含我想要的内容,但位置错误。
为什么它将目录放在目标文件夹中,而不是仅仅将目录的内容放在目标文件夹中?
答案 0 :(得分:247)
如果第二个arg是目录,则这是ln
的行为。它会在其中放置第一个arg 的链接。如果希望/etc/nginx
成为符号链接,则应首先删除该目录并运行相同的命令。
答案 1 :(得分:30)
当目标已经存在并且是目录时,这就是ln
要记录的内容。如果您希望/etc/nginx
符号链接而不是包含符号链接,最好不要先将其创建为目录!
答案 2 :(得分:9)
在脚本中有用这样的东西:
if [ ! -d /etc/nginx ]; then ln -s /usr/local/nginx/conf/ /etc/nginx > /dev/null 2>&1; fi
它会在重新运行脚本
之后重新创建“坏”循环符号链接之前阻止