【问题标题】:How to create a symlink of a directory inside another symlinked directory?如何在另一个符号链接目录中创建目录的符号链接?
【发布时间】:2023-03-14 02:40:01
【问题描述】:

我成功地将 Laravel 网站部署到 Web 服务器上,方法是将其克隆到与 public_html(称为 laravel)相同级别的目录中,并使用以下命令创建指向 laravel/public 目录的符号链接到 public_html: ln -s laravel/public public_html 这很好用。

现在我想要一个网站的“测试”版本用于开发,我也想做同样的事情。

  1. 我将我的项目克隆到“laravel_dev”目录中,与 public_html 和 laravel 目录处于同一级别。
  2. 我创建了一个 public_html/dev 目录。
  3. 现在,我想在 'public_hmtl/dev' 中创建一个 'laravel_dev/public' 的符号链接,这就是我遇到问题的地方。 如果我做 ln -s laravel_dev/public public_html/dev 它会在 public_html/dev 中创建一个名为 public 的文件(不是目录)。

我尝试让目标转到 laravel/public/dev,结果相同。 我仔细检查了 laravel_dev/public 目录是否存在并且它不是空的。 我还尝试删除 laravel/public/dev 中的 dev 目录,结果是它在 laravel/public 中创建了一个名为 dev 的文件,但它不是目录。

为了澄清,我的目录树是这样的:

www
|___public_html(1)/dev
|___laravel/public(1*)/dev
|___laravel_dev/public

当我执行上述命令时,我位于 www 目录中 (数字)表示符号链接,* 表示“物理”目录。在这里使用这个符号是我想要完成的:

www
|___public_html(1)/dev(2)
|___laravel/public(1*)/dev(2)
|___laravel_dev/public(2*)

【问题讨论】:

    标签: laravel bash symlink ln


    【解决方案1】:

    你应该在物理目录中建立链接。

    mkdir laravel{,_dev}
    ln -s laravel public_html
    ln -s ../laravel_dev laravel/dev
    

    它给了我以下目录/文件树

    [Alex@Normandy so]$ tree
    .
    ├── laravel
    │   └── dev -> ../laravel_dev
    ├── laravel_dev
    └── public_html -> laravel
    

    简单测试:

    [Alex@Normandy so]$ echo "test dev" > laravel_dev/test
    [Alex@Normandy so]$ cat public_html/dev/test 
    test dev
    

    请注意,您的网络服务器也可能存在问题。

    【讨论】:

    • 对不起。我不太听从你的回答。为什么在第二个命令中使用“../”?您是否更改了目录并跳过了该步骤?
    • 这就是 ln -s 的工作方式。假设你是laravel/devsoftlink。那么在你看来laravel_dev 目录就是../laravel_dev。软链接支持绝对路径和相对路径。
    猜你喜欢
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    • 2012-01-25
    • 1970-01-01
    • 2021-12-19
    • 2014-12-10
    相关资源
    最近更新 更多