如何让oh my zsh使用最新的zsh版本?
我在iTerm(osx)中使用zsh和oh-my-zsh。我遇到以下问题:如何让oh my zsh使用最新的zsh版本?,zsh,oh-my-zsh,Zsh,Oh My Zsh,我在iTerm(osx)中使用zsh和oh-my-zsh。我遇到以下问题: echo$ZSH_版本返回4.3.11 我成功运行了upgrade\u oh\u my\u zsh echo$ZSH_版本再次返回4.3.11 我运行brew安装zsh/brew升级zsh,得到一个错误:zsh-5.0.2已安装 然而,即使我重新启动iTermecho$ZSH_版本后,仍然返回4.3.11 如何让OMZ使用最新的zsh版本?解决了这个问题。我的/etc/path的顶部已经有/usr/local/bin。当
echo$ZSH_版本
返回4.3.11upgrade\u oh\u my\u zsh
echo$ZSH_版本
再次返回4.3.11brew安装zsh
/brew升级zsh
,得到一个错误:zsh-5.0.2已安装
echo$ZSH_版本
后,仍然返回4.3.11如何让OMZ使用最新的zsh版本?解决了这个问题。我的
/etc/path
的顶部已经有/usr/local/bin
。当我打开/usr/local/bin/
时,我看到除了zsh
,我还有zsh-5.2.0
。我尝试了chsh-s/usr/local/bin/zsh-5.2.0
,但没有效果。我删除了zsh
,并将zsh-5.2.0
重命名为zsh
->也没有用。我看到zsh-5.2.0
指向/usr/local/cillar/zsh/5.0.2/bin/zsh-5.0.2
,之前我看到原始zsh
指向/bin/zsh
。所以帮助我的是:
- 打开的
->包含/usr/local/ceral/zsh/5.0.2/bin/
和zsh
zsh-5.2.0
- 将
从那里复制到zsh
并重写/bin/
/bin/zsh
- 重新启动的iTerm
是一个zsh配置框架。它不是“zsh”,只是shell的配置文件。升级oh my zsh
和oh my zsh
本身是两个独立的、基本不相关的任务李>zsh
- 用新二进制文件覆盖
是一种解决方案。另一种方法是使用一个-可能是从/bin/zsh
到/usr/local/cillar/zsh/5.0.2/bin/zsh-5.2.0
中的某个地方(如$PATH
),并使用/usr/local/bin/
设置shell。符号链接的优点是保留了所有二进制文件(因此仍然有chsh
,4.3
,5.0
)李>5.2
- 也许可以解释一下为什么
不起作用李>chsh
我的~/.zshrc中有以下内容。它将在给定的目录列表中找到一个可用的zsh,按版本号对它们进行排序,并执行最新的一个
如果希望它搜索PATH变量的内容,可以使用if [[ $- == *i* ]]; then arg=$( for dir in \ /usr/local/bin \ /usr/gnu/bin \ /usr/sfw/bin \ /bin \ /usr/bin do arg=$dir/zsh # Make sure the shell is a readable, executable file. if [[ ! -f $arg || ! -r $arg || ! -x $arg ]]; then continue fi # Print sortable version number and path to shell. ver=$( $arg -c 'echo $ZSH_VERSION' 2>/dev/null ) if [[ -n $ver ]]; then printf '%03u%03u%03u %s\n' $( echo $ver | tr '.' ' ' ) $arg fi done | sort -r | head -1 | cut -c11- ) if [[ -n $arg && $arg != $SHELL ]]; then echo "Switching SHELL to $arg" export SHELL=$arg exec $SHELL -li fi fi
如果目录名中有空格,则必须使用for dir in $( echo "$PATH" | tr ':' ' ' ); do (...)
并在$arg和$SHELL周围添加双引号printf '%s\n' "$PATH" | tr ':' '\n' | while read dir; do (...)
- 我很高兴你找到了解决办法。一些注意事项: