如何使zsh在Mac OS X(在iTerm中)作为loginshell运行?
当zsh在Mac OS X上被设置为loginshell时,当它由iTerm启动时,zsh并不认为它是作为loginshell运行的,虽然它是以'-zsh'(' – '作为arg [0]的第一个字符),它应该表示它应该作为loginshell启动。
所以,当我将loginshell设置为bash时,bash首先在$ 0中识别出这个“ – ”,并作为loginshell运行,但是zsh并没有这样做,尽pipe看起来应该如此。
有没有办法让zsh识别arg [0]中的' – ',或者让iTerm使用–login命令行参数运行shell?
chsh -s $(which zsh)
系统会提示您input密码,但一旦更新了设置,您在该机器上启动的任何新的iTerm / Terminal会话将默认为zsh。
在iTerm中 – >首选项 – >configuration文件选项卡 – >常规部分将命令设置为:/ bin / zsh –login
进入系统偏好设置 – >select用户 – > 点击locking进行更改 (左下angular) – >右键单击当前用户select高级选项… – >selectloginshell: / bin / zsh和OK
您是否尝试过在帐户设置中编辑shell条目?
转到帐户首选项,解锁,并右键单击您的用户帐户的高级设置对话框。 你的shell应该是/ bin / zsh,你可以适当的编辑这个调用(即添加–login参数)。
在启动时更改shell的命令是chsh -s <path_to_shell>
。 Mac OS X中的默认shell安装在bin
目录中,所以如果你想改变默认的zsh
那么你可以使用下面的命令
chsh -s /bin/zsh
如果您使用的是不同版本的zsh
那么您可能需要将该版本添加到/etc/shells
以避免非标准的shell消息。 例如,如果你想家庭酿造的zsh
版本,那么你必须添加/usr/local/bin/zsh
到上面提到的文件,你可以在一个命令中做sudo sh -c "echo '/usr/local/bin/zsh' >> /etc/shells"
然后运行
chsh -s /usr/local/bin/zsh
或者如果你想在一个命令中完成整个事情,只需要复制并粘贴,如果你已经安装了zsh
sudo sh -c "echo '/usr/local/bin/zsh' >> /etc/shells" && chsh -s /usr/local/bin/zsh
使用login
实用程序创buildloginshell。 假设你想login的用户拥有用户名Alice ,并且zsh安装在/opt/local/bin/zsh
(例如,通过MacPorts安装的更新版本)。 在iTerm 2中,转至“首选项”,“configuration文件”,select要设置的configuration文件,然后input命令 :
login -pfq Alice /opt/local/bin/zsh
有关选项的更多详细信息,请参阅man login
。