繁体   English   中英

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

[英]How can I use the /home directory on Mac OS X

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

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

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

所以,问题是,无论如何都可以在 Mac 上安全地使用 /home,无论是 Leopard 还是 Snow Leopard?

(注意:我意识到这是 Mac 特有的,也会在 Apple 论坛上提问。除了涵盖所有基础之外,我只想在这里提问。)

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

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

注意:自 2015 年起,我不再使用或推荐这种方法。 相反,我使用Vagrant来设置用于开发和测试的虚拟机。 它是免费的,相对容易,并且可以更好地匹配生产环境。 它完全分离了开发环境,您可以根据需要制作任意数量。 强烈推荐 为了后代的缘故,我将在下面留下原始答案。


在 Apple 论坛上找到了答案。

为了回收/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中的内容。 我不是 100% 确定发生了什么,但这是需要注意的事情。

根据上面的提示和提示将它们放在一起:

  • 编辑/etc/auto_master #注释掉/home所在的行。

  • 重新安装:

    sudo automount -vc

  • 建立到 mac 化目录的软链接:

    sudo ln -s $HOME /home/$USER

那时,您的路径应该与您的生产路径相匹配。 env vars 仍将指向/Users/xxxx ,但是您在.bashrc中的路径中硬编码的任何内容——或者说,在~/.pip/pip.conf ——本质上应该是等效的。 为我工作。

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

在生产环境中,我的部署工作可能发生在/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文件系统。

我在优胜美地 (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

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

  1. 按照 Alan W. Smith 的建议,注释掉/etc/auto_master中的/home条目。
  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

为什么不直接运行 MAMP 并使用 Sites 目录呢? 您可以在 localhost 之外开发,并为您的网站设置一堆别名。 我不确定您为什么特别需要使用主目录。


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

如果它是您担心的 HTML 路径,那么一切都以斜杠“/”开头,这将默认为主目录。

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

尝试以一种迂回的方式从 /home 进行开发,因为它看起来更像是生产服务器是一个坏主意。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM