如果你和我一样,把主力笔记本折腾到Ubuntu 25.10,大概率经历过那种“装完新系统先花半天配置终端”的日子。bash不是不能用,但当你频繁要补全超长路径、想一眼看到当前Git分支、又要翻之前敲过的某条历史命令时,默认终端确实会让人感觉效率差了一口气。这篇文章更适合那些刚升级到Ubuntu 25.10、想搭一套顺手终端环境的新手朋友;当然,如果你是从Windows直接切到Ubuntu,这篇更像是一份从零开始的路线图。我会把安装oh-my-zsh的完整过程,包括中间可能卡住的网络问题、主题配置、插件选型,逐步写清楚,尽量让你照着敲就能跑通。
1. 为什么Ubuntu 25.10上值得花十分钟配置oh-my-zsh
1.1 zsh和oh-my-zsh解决的到底是什么问题
先搞清楚一个概念:zsh是一个shell,而oh-my-zsh是建立在zsh之上的配置管理框架。默认的bash本身非常稳定,脚本兼容性也强,但它的交互体验放在2025年来看确实有点朴素——没有自动建议、没有语法高亮、提示符里不会显示当前Git分支状态,更不要说一套统一的主题和插件体系。你可以手动去改bash的PS1变量、装各种补全工具,但每换一台机器都得重新折腾一遍,非常磨人。
oh-my-zsh做的事情,是把zsh的配置、主题、插件、更新机制都打包好。你写完一条命令,按下Tab键能补全长参数;你输入一个不存在的命令,屏幕会立刻用红色提示你;你在某个Git仓库里操作时,提示符直接显示当前在哪个分支上。这些体验不是花哨,而是实打实的效率提升。尤其是对每天要敲上百条命令的开发者来说,省下的每一秒都会叠加起来。
1.2 Ubuntu 25.10的Shell环境现状
我在全新安装的Ubuntu 25.10上观察到的现象是:默认桌面环境仍然是GNOME,默认终端仍然是GNOME Terminal,默认shell也仍然是bash。系统的软件源里虽然有zsh,但不会主动帮你装。这意味着所有和zsh相关的动作都需要你手动完成。
Ubuntu 25.10默认的bash环境,对于普通用户来说够用,但对于要管理服务器、写脚本、频繁操作文件的人来说,你会发现几个特别影响体验的点:历史命令搜索要按Ctrl+R再输入关键字,没有模糊补全,没有目录快速跳转,提示符也不包含当前目录的可视化状态。与其说是“难用”,不如说是“需要自己动手才能变好用”。而oh-my-zsh恰恰能补齐这一整块缺失。
1.3 安装前需要确认的三件事
第一,确认你的网络环境。oh-my-zsh官方安装脚本从GitHub下载仓库,国内网络环境经常会在这一步卡住。如果你所在网络访问GitHub比较慢,下文会给出替代方案,不需要因此放弃安装。第二,确认系统版本。本文针对Ubuntu 25.10,但大部分步骤在22.04到24.04版本同样适用,只是软件源里的zsh版本可能略有差异。第三,确认你的需求。如果你只是想要一个好看一点的终端,那装主题就够了;如果你想提升命令操作效率,那就需要认真配置插件。
提示:在开始之前,强烈建议先把系统里的软件包列表更新一遍。虽然这一步看起来和oh-my-zsh没有直接关系,但安装zsh时如果索引过旧,apt可能找不到最新版本,甚至出现依赖冲突。
2. 安装流程:从更新软件源到切换默认Shell
2.1 安装zsh并验证版本
先打开终端,执行下面两条命令:
sudo apt update sudo apt install zsh -y安装完成后,用zsh --version验证一下版本号。我在Ubuntu 25.10上装到的版本是zsh 5.9,这个版本对oh-my-zsh的兼容性没有问题。如果你装到的版本比5.8还旧,建议检查一下软件源配置。
验证zsh安装成功后,暂时不要急着运行zsh,因为第一次启动会进入一个初始化向导,对新手来说容易一脸懵。我们直接进入下一个环节,先把oh-my-zsh框架装上。
2.2 用官网脚本安装oh-my-zsh时的网络问题
oh-my-zsh官网推荐的一行安装命令是这样:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"这条命令的逻辑是:先用curl下载远程安装脚本,然后用sh执行它。问题在于raw.githubusercontent.com这个域名在国内经常连接超时,脚本还没下下来,整个流程就卡住了。你可能等很久也没有反应,最后只能Ctrl+C中断。
我实际测试过几种替代方案,这里直接给出优先级排序。
方案一:使用镜像加速地址下载脚本。比如通过ghproxy.com这类GitHub代理加速服务来获取脚本:
sh -c "$(curl -fsSL https://ghproxy.com/https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"这类加速服务有时会失效,如果失败不要纠结,直接换下一个方案。
方案二:从Gitee镜像手动克隆。很多开发者把oh-my-zsh仓库同步到了Gitee,你可以先把框架手动下载到本地,再执行脚本:
git clone https://gitee.com/mirrors/oh-my-zsh.git ~/.oh-my-zsh cd ~/.oh-my-zsh sh ./tools/install.sh用这个方式的好处是,只要git能连通Gitee,基本不会卡住。镜像仓库可能不是永远最新,但核心框架和常用插件完全够用。
方案三:如果以上都不行,那就直接从GitHub手动克隆,但换一个更稳的CDN加速地址:
git clone https://gitclone.com/github.com/ohmyzsh/ohmyzsh.git ~/.oh-my-zsh克隆完之后,同样进入目录执行sh ./tools/install.sh。这个脚本会把.zshrc模板复制到你的用户目录下,并自动备份已存在的.zshrc为.zshrc.pre-oh-my-zsh。
注意:执行完安装脚本后,你会看到脚本自动切换到了zsh。此时不要急着去安装主题和插件,先确认一下框架目录是否完整,检查
~/.oh-my-zsh下是否有custom、plugins、themes这些子目录。
2.3 切换默认Shell的正确姿势
oh-my-zsh安装脚本会在执行完提示你切换默认shell,但可能有部分用户因为环境变量或终端窗口的问题没有成功切换。手动切换的命令是:
chsh -s $(which zsh)这个命令会修改/etc/passwd里当前用户的登录shell。执行后系统会提示你输入密码,输完看不到字符是正常现象。修改成功后,需要注销并重新登录,或者直接关闭终端再打开一个新终端,echo $SHELL会显示为/usr/bin/zsh。
有一个容易踩的坑:如果你用chsh -s时报错“shell not found”,先确认zsh的安装路径是不是在/usr/bin/zsh,用which zsh看一下。如果路径不是这个,比如装到了/usr/local/bin/zsh,那就把命令改成chsh -s /usr/local/bin/zsh。
还有一点,如果你是通过SSH远程连接服务器来操作,切换默认shell后可能需要断开会话并重新连接,否则当前会话不会生效。另外,不建议用sudo chsh直接改root的shell,除非你知道自己在做什么。日常使用中,给普通用户切换就足够了。
3. 插件与主题配置:让自己的终端更像生产力工具
3.1 主题选择与Powerlevel10k安装
oh-my-zsh默认主题是robbyrussell,它比bash好看,但信息量偏少。如果你长期在一个项目里工作,提示符只有一行,目录路径稍微一长就看不清。所以我建议直接换成Powerlevel10k,这个主题最大的特点是信息密度高、视觉冲突小,而且渲染速度快。
安装Powerlevel10k的命令:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k如果GitHub连接超时,可以把仓库地址换成镜像加速地址。克隆完成后,编辑~/.zshrc,把ZSH_THEME改成:
ZSH_THEME="powerlevel10k/powerlevel10k"保存后执行source ~/.zshrc,首次加载Powerlevel10k会进入配置向导。这里有几种图标风格可选,可以按自己喜好选择。如果你中途选错了,或者想重新设置样式,直接在终端运行p10k configure就能重新走一遍向导。
Powerlevel10k对终端字体有要求。官方推荐Meslo Nerd Font,如果用的是系统默认字体,你会看到很多方框和乱码图标。下载字体并把GNOME Terminal的字体改成MesloLGS NF之后,重启终端,图标才能正常显示。
3.2 常用插件:zsh-autosuggestions和zsh-syntax-highlighting
主题解决了“好看”的问题,插件才是真正提升“好用”的关键。这里推荐两个必装插件:zsh-autosuggestions和zsh-syntax-highlighting。
zsh-autosuggestions会在你输入命令时,根据历史记录给出浅灰色的建议,按右方向键就能补全。这个功能的体验非常接近IDE里的自动建议,属于用过就回不去的那种。安装方式:
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestionszsh-syntax-highlighting的作用是命令语法高亮。你输入的命令存在时会显示绿色,不存在时会显示红色,路径、选项也会有不同的颜色标记。安装方式:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting如果GitHub连接不顺利,同样可以加上ghproxy.com前缀,或者使用Gitee上的同步仓库。
克隆完两个插件后,编辑~/.zshrc的plugins数组:
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)保存后执行source ~/.zshrc生效。
3.3 配置.zshrc时需要留意的坑
第一个坑是插件名称必须与实际目录名完全一致,包括大小写。如果你把插件克隆到了~/.oh-my-zsh/custom/plugins/zsh-autosuggestions,那plugins数组里写的就必须是zsh-autosuggestions。写错名称不会报错,只会静默加载失败。
第二个坑是zsh-syntax-highlighting在plugins数组里的位置很有讲究。我的建议是把它放在数组的最后一位。原因是这个插件通过高亮器接管了命令行的渲染,如果它后面还有其他插件,可能会因为加载顺序问题导致高亮不生效。
第三个坑是不要频繁修改~/.zshrc而不清理~/.zsh_history。有些用户发现历史命令建议总是匹配不到想要的内容,往往是历史文件里堆积了大量无效记录。你可以用fc -R重新读取历史,或者在确认配置无问题后清理一次历史文件,但清理前记得备份。
4. 实测中遇到的问题与排查过程
4.1 插件加载顺序导致的命令高亮不生效
我装完zsh-syntax-highlighting后,有一段时间命令颜色完全没有变化。当时的第一反应是安装失败,于是反复检查克隆目录和plugins数组里的名称,都没发现异常。最后我试着把zsh-syntax-highlighting从数组中间移到最后,重新source ~/.zshrc,问题立刻解决了。
这个问题的根因在于zsh-syntax-highlighting在加载时会注册自己的ZLE小部件,如果后续还有其他插件改写了ZLE的行为,高亮效果就会被覆盖。把高亮插件放到最后,等于让它拿到了命令行的最终渲染权。这个经验不仅适用于oh-my-zsh,你在手动配置其他zsh插件时也会遇到类似情况。
排查这类问题有个通用方法:用echo $plugins确认插件数组被正确解析,再逐条注释掉其他插件,只保留一个高亮插件,观察是否生效。二分法测试加载问题通常很快就能定位到是哪个插件在打架。
4.2 终端启动变慢的排查与优化
装了十来个插件之后,终端启动速度明显变慢,每次开一个新标签页都要等一两秒。这个速度在可接受范围内,但当你要频繁打开终端时,延迟还是很让人抓狂的。
先跑一条命令看启动耗时:
time zsh -i -c exit正常优化后的zsh,启动时间应该在100ms到200ms之间。如果超过500ms,说明有插件或配置拖慢了启动过程。
进一步定位的方法是用zsh自带的profiler。在~/.zshrc的最顶部插入:
zmodload zsh/zprof然后在文件最底部插入:
zprof重新打开终端,你会看到一张表格,列出了每个函数的调用耗时。实测中我发现,最耗时的通常是自动跳转类的插件,比如autojump,它们要加载历史数据库。如果加载时间超过50ms,建议考虑是否真的需要这个插件,或者改用更轻量的方案。
另外,Powerlevel10k提供了一个优化功能叫instant prompt,它会提前渲染提示符,减少等待感知。只要在~/.zshrc中保留typeset -g POWERLEVEL9K_INSTANT_PROMPT=quiet这个配置,每次启动终端时P10k会把上次的提示符数据缓存下来,视觉效果上启动会快很多。
4.3 中文显示乱码的修复
升级到Ubuntu 25.10后,我在终端里遇到过一些乱码情况,主要表现为中文文件名变成方块,或者Powerlevel10k的图标变成了问号。前者的原因通常是终端没有配置支持中文的字体,后者的原因则是没有安装Nerd Font。
解决分两步。第一步安装基础字体支持:
sudo apt install fonts-powerline -y第二步下载Meslo Nerd Font,安装到~/.local/share/fonts目录,然后执行fc-cache -fv刷新生效。之后打开GNOME Terminal的偏好设置,在配置文件里把自定义字体改成MesloLGS NF,字号建议11或12,保留一个适合阅读的大小。
还有一个容易被忽略的情况:如果你通过SSH连接远程服务器,远程环境的locate设置也会影响中文显示。确保服务器和本地的编码都是UTF-8。本地Ubuntu 25.10桌面版一般没有问题,但如果你把终端连到了某些云服务器上,需要在服务器端执行:
export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8不过这些内容和oh-my-zsh本身关系不大,属于终端环境的通用排查路径。如果你只是配置本地桌面,跳到下一步。
5. 我的补充建议与收尾小技巧
5.1 备份配置的习惯
配置oh-my-zsh的过程中,最大的风险不是安装失败,而是改~/.zshrc时手误删掉重要配置。我在日常维护中养成的一个习惯是,每次修改配置文件前先做一个备份:
cp ~/.zshrc ~/.zshrc.bak如果改坏了,可以直接恢复:
cp ~/.zshrc.bak ~/.zshrc另外,Powerlevel10k的配置单独存在~/.p10k.zsh文件里,这个文件也值得备份。当你更换电脑时,只需要把~/.zshrc、~/.p10k.zsh和~/.oh-my-zsh/custom目录拷贝过去,就能基本复刻当前终端环境,不需要重新配置一遍。
5.2 多终端同步配置的思路
如果你有多台电脑,每台都手动配置一遍会非常痛苦。可以建一个dotfiles仓库,把~/.zshrc、~/.p10k.zsh、~/.oh-my-zsh/custom目录纳入Git管理。仓库地址可以用自己的私有仓库,方便随时拉取。
我自己用的是一个简单方案:写一个安装脚本,脚本里先安装zsh,再克隆dotfiles仓库,然后把仓库里的配置文件软链接到用户目录。这样即使换了新机器,一条命令就能恢复到接近之前的终端环境。当然,如果你不想折腾,简单的备份拷贝也已经能解决很大一部分问题。
最后再分享一个小技巧:oh-my-zsh升级频繁,定期执行omz update可以获取最新的插件和主题更新。但升级后一定要重启终端并检查插件是否正常加载,尤其是本机装了多个插件时,偶尔会遇到新版本不兼容的情况。遇到问题不要慌,回退.zshrc或删除新引入的配置项,一般都能恢复。终端环境这件事,本质上是服务于人的习惯,你觉得好用,比任何花哨配置都重要。