在Mac OS X上将zsh设置为登录shell时,由iTerm启动时,zsh不会将其作为登录shell运行,尽管它以'-zsh'('-'开头arg [0]的第一个字符),这意味着它应该以登录shell开始。
因此,当我将登录shell设置为bash时,bash会识别$ 0中的第一个'-'并作为登录shell运行,但zsh不会,尽管看起来应该如此。
有没有办法使zsh识别arg [0]中的“-”,或者使iTerm使用--login命令行参数运行shell?
在Mac OS X上将zsh设置为登录shell时,由iTerm启动时,zsh不会将其作为登录shell运行,尽管它以'-zsh'('-'开头arg [0]的第一个字符),这意味着它应该以登录shell开始。
因此,当我将登录shell设置为bash时,bash会识别$ 0中的第一个'-'并作为登录shell运行,但zsh不会,尽管看起来应该如此。
有没有办法使zsh识别arg [0]中的“-”,或者使iTerm使用--login命令行参数运行shell?
Answers:
在iTerm->“首选项”->“配置文件”选项卡->“常规”部分中,将命令设置为:/ bin / zsh --login
/usr/local/bin/zsh --login
chsh -s $(which zsh)
系统将提示您输入密码,但是一旦更新设置,则在该计算机上启动的所有新iTerm / Terminal会话都将默认为zsh。
chsh
告诉您“非标准外壳”之类的信息,则意味着您必须将新外壳的路径添加到/etc/shells
。例如,如果您要更改为homebrew安装的zsh版本,并将其放入,则会发生这种情况/usr/local/bin/zsh
。
chsh -s $(which zsh)
可用于确保正确的路径。
启动时更改外壳程序的命令是chsh -s <path_to_shell>
。Mac OS X中的默认外壳安装在该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
/etc/shells
答案本身中唯一提及的道具。
您是否尝试过在帐户设置中编辑外壳程序条目。
转到“帐户”首选项,解锁并右键单击“ 高级设置”对话框的用户帐户。您的shell应该是/ bin / zsh,并且您可以适当地编辑该调用(即添加--login参数)。