安装/升级/设置 ZSH 的默认版本的最终方法是啥? [关闭]

Posted

技术标签:

【中文标题】安装/升级/设置 ZSH 的默认版本的最终方法是啥? [关闭]【英文标题】:What is the definitive way to install/upgrade/set the default version of ZSH? [closed]安装/升级/设置 ZSH 的默认版本的最终方法是什么? [关闭] 【发布时间】:2012-08-15 11:36:21 【问题描述】:

OSX Mountain Lion 在 /bin/zsh 中附带 ZSH 4.3.1。下载后,./configure, make, make check,make install-ing版本5.0.0,

which zsh 仍然返回/bin/zsh/

zsh --version 仍然返回zsh 4.3.11 (i386-apple-darwin12.0)

帮助回答者的注意事项: 我运行安装命令没有错误。

/usr/local/bin,我有这3个文件:-rwxr-xr-x 2 kevinsuttle admin 622K Aug 20 00:59 zsh-rwxr-xr-x 2 kevinsuttle admin 622K Aug 20 00:59 zsh-5.0.0-rwxr-xr-x 1 kevinsuttle admin 622K Aug 20 00:50 zsh.old

我的$PATH$ echo $PATH/Users/kevinsuttle/.rbenv/shims:/Users/kevinsuttle/.rbenv/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin

我需要回答的问题: 1.安装ZSH最干净的方法是什么? (来自 git、自制软件、curl-ing 源?) 2. 在哪里运行安装命令是否重要? 3. 如何升级或覆盖 Mountain Lion 附带的 ZSH 版本? 4. 这就是人们最终使用oh-my-zsh的原因吗?

【问题讨论】:

我不确定这会如何影响事情,但你可以将你的本地 shell 指向你想要的版本吗?在您自己的 ~/bin 中创建一个符号链接,并在您的 PATH 中尽早添加。 这间接导致了我的解决方案。我只需要将我想要的目录添加到我的 $PATH 中。谢谢! 【参考方案1】:

我会尝试回答你的问题,但我觉得这更适合superuser

安装 ZSH 最干净的方法是什么? (来自 git、自制软件、curl-ing 源?)

随心所欲地获取源;但最干净的方法是创建一个私人bin,我喜欢/Users/burhan/bin/,然后在那里安装东西。在我看来,这是最干净最简单的方式,因为您不需要依赖其他库/安装程序/魔术。

在哪里运行安装命令是否重要?

不,给命令提供什么参数并不重要——尤其是目标安装位置和库路径。如果您不提供这些(或事先在环境中设置它们),安装程序会将项目放置在默认系统路径中;要做到这一点,您需要以提升的权限运行安装程序,即使用sudo 或以root 登录。

如何升级或覆盖 Mountain Lion 随附的 ZSH 版本?

我建议不要升级它;仅仅是因为我不确定它会对期望它与广告版本一起发布的各种其他脚本产生什么副作用。为了您的理智,我会避免这种情况。

相反,如果您将其构建并安装到私人垃圾箱中并适当地指向您的PATH;您可以使用更新后的版本,而无需修改已发布的版本。

【讨论】:

嗯,现在我必须编辑 /etc/shells 以让 chsh 识别新位置,这很好,但我不必在 Lion 上这样做。此外,一旦我将默认 shell 更改为 zsh,窗口标题中的活动进程仍会读取 bash。这很古怪。我运行chsh -s /usr/local/bin/zsh kevinsuttle 来更改默认值。 $ echo $0 返回 -bash$ echo $SHELL 返回 /usr/local/bin/zsh 要解决这个问题,编辑Terminal > Preferences,然后设置默认启动shell;然后在Settings 中,选择您的主题并单击Windows 选项卡;您可以修改那里显示的标题。我真的很喜欢iTerm2,因为它更易于定制。 谢谢布尔汉。做到了。尽管如此,来自 chsh 的行为仍然很奇怪。我以前不需要跳这个小舞。一定是为什么这么多人放弃并使用 oh-my-zsh 进行配置。 我认为这可能是 Terminal 特定的事情 Kevin。由于这个和其他“怪癖”,我停止使用它。 iTerm2Terminator 如果您打算将大部分时间花在 shell 中。【参考方案2】:

好的,所以 Burhan 的评论让我想起了一种情况,即我必须将首选版本的路径显式添加到我的 .bash_profile。 5.0.0 版在/usr/local/bin 中,所以现在我的.bash_profile 中的$PATH 看起来像这样:

export PATH="$HOME/.rbenv/bin:/usr/local/bin:$PATH"

现在当我运行which zsh 时,我得到/usr/local/bin/zshzsh --version 返回 zsh 5.0.0 (x86_64-apple-darwin12.0.0)

哇!希望这可以帮助遇到同样问题的人。

【讨论】:

【参考方案3】:

您必须在 OSX 中设置默认 shell:

chsh -s /usr/local/bin/zsh $USER

重新登录到 OSX,它应该可以工作了!

自制方式

我建议您使用自制软件。它使事情变得容易得多。 安装自制软件,如http://mxcl.github.com/homebrew/ 中所述。

Homebrew 将您的东西安装在 /usr/local/bin 中,因此请确保 /usr/local/bin 位于 /usr/bin 之前。

在 ~/.zshrc 和 ~/.bashrc 中添加以下行:

PATH="/usr/local/bin:/usr/local/sbin:$PATH"

安装zsh:

brew install zsh

将你的默认 shell 设置为 zsh:

chsh -s /usr/local/bin/zsh $USER

最后从 brew 安装中设置使用 zsh 的权限。将“/usr/local/bin/zsh”添加到“/etc/shells”文件以允许zsh。否则您将收到错误“您无权运行此应用程序。管理员已将您的 shell 设置为非法值。”

echo "/usr/local/bin/zsh" | sudo tee -a /etc/shells

我建议修复 OSX 中的 zsh 环境错误。将 /etc/zshenv 重命名为 /etc/zshrc

sudo mv /etc/zshenv,zshrc

重新登录到 OSX,它应该可以工作了!

如果遇到问题,请输入:

brew doctor

【讨论】:

只是想在 Mac 上折腾一下,更改用户默认 shell 的“官方”方法是在系统偏好设置的帐户面板中右键单击您的姓名(解锁“进行更改”)和更改高级选项下的默认外壳。我不确定这是否与使用 chsh 完全相同。 由于您指定的原因,我认为没有必要弄乱 $PATH 顺序,因为您使用chsh -s 来使用位于/usr/local/bin/zsh 的shell。 $PATH 将确定哪个版本的zsh 在您调用它来运行脚本或运行zsh 或其他东西时运行。另请注意,OS X 的 zsh 位于 /bin/ 而不是 /usr/bin/ 其实在换壳之前需要先将/usr/local/bin/zsh添加到/etc/shells,这样chsh才能被选中。 完美答案,对我帮助很大! 很好的答案。注意错字:chsh -s /user/local/bin/zsh $USER 应该有 usr 而不是 user【参考方案4】:

过去,我为这种类型的升级想出的解决方案大致如下:

在某处安装较新的版本(在我的情况下是 fink /sw/bin 的默认值) 在 /bin /bin/zsh => /bin/zsh.moved 中重命名 OS 安装版本 在 /bin 中设置指向 /sw/bin/zsh 安装的符号链接

这似乎奏效了。

我想知道这是否是一个愚蠢的解决方案,如果是,为什么? 谢谢

【讨论】:

以上是关于安装/升级/设置 ZSH 的默认版本的最终方法是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Arch Linux 终端升级zsh(oh my zsh)

ubuntu-18.04 安装zsh的方法步骤

在 Linux Mint 19 上安装 zsh 和设置小键盘一步到位

zsh提示command not found mysql

Linux系统之升级内核版本方法

升级oh_my_zsh报错