我的问题是,在运行Homebrew
,Zsh
和Oh My Zsh
以及配置.zshrc
文件方面,运行两个管理员帐户以进行开发会有什么好方法?
我的理由是,我最近开始了一份新工作,并希望将我的Mac用于两个帐户,这两个帐户都是管理员,我将需要devtools这两个帐户以保持我的工作生活/ dev和个人生活/ dev干净利落地分开。我刚刚删除了我的硬盘并干净地安装了OS X 10.12.3并创建了两个管理员帐户。
我已经设置了它,但是每当我切换帐户并运行终端时,一直都会遇到权限错误,通常是zsh完成特有的。
我的步骤:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
上安装Homebrew。brew install zsh
安装zsh并更改为chsh -s /bin/zsh
。sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
安装我的zsh与卷曲。sudo chown -R $(whoami):admin /usr/local
。然后我尝试了一堆乱七八糟的东西,我不会补充,因为我相信它们可能只会让其他人走上黑暗的道路。
答案 0 :(得分:1)
虽然这个步骤可以安全地以root用户身份运行,但我仍然建议以非root用户身份运行安装,以防止在shell运行时root切换shell出现灾难性问题。永远不应该更改超级用户shell。
以下是为多个用户安装oh-my-zsh
的正确方法。
步骤1:确保umask不比022更严格。如果没有将其设置为022。
$ umask 022
步骤2:使用将安装共享oh-my-zsh的目标路径设置和导出ZSH。
export ZSH=/usr/local/.zsh/oh-my-zsh
步骤3:创建父目录并使其由安装脚本的用户拥有。
$ sudo mkdir /usr/local/.zsh
$ sudo chown ${USER} /usr/local/.zsh
步骤4:运行安装程序。
$ bash -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
步骤5:将安装路径的所有权更改回root。
$ sudo chown -R root /usr/local/.zsh
步骤6:在${ZSH}/templates/zshrc.zsh-template
$ sudo sed -i 's|export ZSH=.*|export ZSH='${ZSH}'|' ${ZSH}/templates/zshrc.zsh-template
(可选) 第7步:禁用自动更新。建议这样做,因为安装现在由root拥有。
$ sudo sed -i 's/# DISABLE_AUTO_UPDATE="true"/DISABLE_AUTO_UPDATE="true"/' ${ZSH}/templates/zshrc.zsh-template
从此开始,每个用户都可以将${ZSH}/templates/zshrc.zsh-template
复制为〜/ .zshrc
答案 1 :(得分:0)
虽然@alvits的答案可能是正确的,但我无法让它为我工作。但是,我能够通过以下方式让它发挥作用。
安装Homebrew(检查https://brew.sh/以获取最新命令):
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
使用Homebrew安装Zsh:
brew install zsh
关闭终端并以ZSH作为默认shell重新打开:
以root用户身份安装Oh My Zsh
sudo su
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
关闭终端以退出root用户模式。
安装Oh My Zsh作为每个管理员(因此安装在两个用户上):
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
这为我停止了所有自动完成和权限错误。我认为这有点矫枉过正,并且有一种方法可以使用符号链接,但这种方式很简单。