如何在Mac OS X上使用/ home目录

时间:2009-09-01 14:08:59

标签: macos directory-structure

我有一台Mac,我可以运行Leopard(10.5)或Snow Leopard(10.6)版本的OS X.在将文件发布到生产主机之前,我正在使用它进行Web开发/测试。

在生产主机上,我的网站的doc根位于主目录下(例如/ home / stimulatingpixels / public_html),我想在Mac上复制该位置。不幸的是,它们是Mac上的隐藏和锁定占位符,看起来像一个装载的驱动器,其中没有任何东西位于/ home位置。

我从经验中知道移动它并放入你自己的/ home目录是不明智的,因为升级会导致它被删除(顺便说一下,它不会存储在TimeMachine备份中)。

所以,问题是,无论如何要在Mac上安全地使用/ home Leopard或Snow Leopard吗?

(注意:我意识到这是非常特定于Mac的,并且也会在Apple论坛中提出这个问题。除了涵盖所有基础之外,我想在这里问一下。)

更新:为了帮助描述我为什么要这样做,除了前端网站之外,我还有一系列我想要运行的脚本。能够使用/ home目录(更具体地说,来自服务器根目录的相同路径)的主要目标之一是,可以在开发mac上使用相同的输出路径,也可以在生产服务器上使用。我知道有办法解决这个问题,但我宁愿不必处理它。真正的目标是让开发Mac上的所有文件与目录树的/ root具有相同的文件路径作为生产服务器。

另一个更新:我之前忘记提及的另一个原因是在使用基本身份验证时设置.htaccess路径。由于这些路径来自文件系统根目录而不是网站docroot,因此当它们是树的一部分时,它们最终会通过“/ home”。

5 个答案:

答案 0 :(得分:59)

注意:截至2015年,我不再使用或推荐此方法。相反,我使用Vagrant来设置开发和测试的虚拟机。它是免费的,相对简单,并且可以更好地匹配生产环境。它完全分离了开发环境,您可以根据需要进行创建。 强烈推荐。为了后人的缘故,我将在下面留下原始答案。


我找到了答案here on the Apple forums

要回收/home目录,请修改/etc/auto_master文件并注释掉(或删除)其中包含/home的行。在此之后您需要重新启动才能使更改生效(或者,根据nilbus的评论,尝试运行sudo automount -vc)。这适用于Mac OS X 10.5(Leopard)。您的millage可能因版本不同而有所不同,但应该类似。

正如该论坛帖子所述,您还应该知道 Time Machine会自动排除/home目录而不会备份


警告提示,请确保在进行系统更新之前手动备份/home目录。我相信我所做的更新之一(例如从10.6到10.7)在没有警告的情况下消除了我在/home中存储的内容。我不是百分之百确定发生了什么事,但这是值得注意的事情。

答案 1 :(得分:11)

我在Yosemite(OS X 10.10.1)上尝试过sudo automount -vc无效,我不得不使用sudo umount /home

因此我的工作流程将是:

# comment out line starting with /home sudo vi "+g/^\/home/s/\//#\//" "+x" /etc/auto_master sudo umount /home # link actual home directory (/Users/<user>) to new 'home' (/home/<user>) ln -s $HOME /home/$USER

答案 2 :(得分:8)

从上面的提示和提示中总结出来:

  • 修改/etc/auto_master注释掉其中包含/home的行。

  • 重新安装:

    sudo automount -vc

  • 制作与mac-ified目录的软链接:

    sudo ln -s $HOME /home/$USER

此时,您的路径应与您的生产路径匹配。 env变量仍会指向/Users/xxxx,但您在.bashrc中的路径中硬编码的任何内容 - 或者说~/.pip/pip.conf中的代码 - 应该基本相同。为我工作。

re: “真正的目标是让开发Mac上的所有文件都具有与目录树的/ root相同的文件路径作为生产服务器。”

在制作时,我的部署工作可能会在/opt/projects/projname中进行,因此我只需确保我的帐户可以写入/opt/projects并从那里开始。我会从做这样的事情开始:

sudo mkdir /opt/projects sudo chown $USER /opt/projects mkdir /opt/projects/projname cd /opt/projects/projname

使用LVM,我将为/opt/设置一个单独的分区,并在那里编写应用数据而不是$HOME。然后,如果我需要更多的磁盘空间用于项目(LVM是你的朋友),我可以扩展/opt文件系统。

答案 3 :(得分:1)

我将之前的解决方案改编为 Big Sur (macOS 11.2),由于 APFS 文件系统的变化,这有点复杂。我按照以下步骤成功更改了 /home

  1. 按照 Alan W. Smith 的建议,注释掉 /home 中的 /etc/auto_master 条目。
  2. 按照 Marco Torchiano 的建议,运行
    sudo umount /home
    
  3. 由于 /home 当前是指向 /System/Volumes/Data/home 的只读链接,因此您必须更改后者。我用以下命令做到了:
    cd /System/Volumes/Data/
    sudo rmdir home
    sudo ln -s <some other directory> home
    

答案 4 :(得分:-2)

为什么不运行MAMP并使用Sites目录?您可以开发localhost并为您的站点提供一堆别名。我不确定你为什么特别需要使用主目录。


编辑: 好吧,我认为你会以错误的方式解决你的问题。

如果您担心的是HTML路径,请使用斜杠“/”开始所有操作,这将默认为家庭模块。

如果它是PHP中的引用,那么您需要创建一个全局(或类似)并将其设置为您站点的根目录。然后,您可以引用全局中的所有内容,当您将站点从开发转移到生产时,您需要更改的是全局。

尝试从/ home开发,因为它看起来更像生产服务器是一个坏主意。

安装MAMP,在层次结构中的某个位置创建全局,并开始重新引用。从长远来看,它会减轻痛苦。