Bazzite系统中Fish Shell启动速度优化分析
2025-06-09 04:28:33作者:齐冠琰
在基于Fedora的原子发行版Bazzite系统中,部分用户报告Fish Shell存在明显的启动延迟问题。本文将从技术角度分析该问题的成因及解决方案。
问题现象
用户在使用Bazzite系统时发现:
- 直接执行
fish命令启动shell存在可感知的延迟 - 使用
fish --no-config参数时启动速度正常 - 在Ubuntu等传统发行版中无此现象
通过性能分析工具生成的启动日志显示,时间消耗主要集中在Homebrew相关的初始化过程。
根本原因分析
深入检查系统配置后发现,问题源于Bazzite预置的Fish Shell配置文件/usr/share/fish/vendor_conf.d/brew.fish中存在逻辑缺陷。该文件包含以下关键代码段:
if [ ! -L (brew --prefix)/share/fish/vendor_completions.d/brew ]
brew completions link > /dev/null
end
这段代码的本意是:当Homebrew的Fish补全文件未链接时,执行链接操作。但存在两个问题:
- 条件判断错误地检查了名为
brew的符号链接,而实际生成的链接名为brew.fish - 导致每次shell启动都会重复执行不必要的
brew completions link命令
解决方案
通过修改条件判断逻辑,将检查目标从brew改为brew.fish:
if [ ! -L (brew --prefix)/share/fish/vendor_completions.d/brew.fish ]
brew completions link > /dev/null
end
这一修改带来以下改进:
- 避免了重复执行链接操作
- 将shell启动时间恢复到接近即时响应的水平
- 保持了所有Homebrew补全功能的完整性
技术启示
- 原子发行版的配置管理:在不可变系统中,预置配置需要经过更严格的测试
- Shell启动优化:对于交互式shell,应尽量减少启动时的外部命令调用
- 条件判断的严谨性:文件存在性检查需要与实际文件命名完全匹配
该修复已随系统更新推送至用户,体现了Bazzite团队对用户体验的持续优化。对于使用自定义shell配置的用户,建议定期检查启动脚本中的类似模式,确保不会引入不必要的性能开销。
登录后查看全文
热门项目推荐
相关项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0216
cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。Jupyter Notebook0138
uni-appA cross-platform framework using Vue.jsJavaScript08
GLM-5.2智谱开源 GLM-5.2,这是针对长文本任务的最新旗舰模型。相较于前代产品 GLM-5.1,它在长文本任务处理能力上实现了显著飞跃,并且首次在稳定的 100 万 token 上下文中提供这一能力。Jinja00
SwanLab⚡️SwanLab - an open-source, modern-design AI training tracking and visualization tool. Supports Cloud / Self-hosted use. Integrated with PyTorch / Transformers / LLaMA Factory / veRL/ Swift / Ultralytics / MMEngine / Keras etc.Python00
tiny-universe《大模型白盒子构建指南》:一个全手搓的Tiny-UniverseJupyter Notebook03
项目优选
收起
deepin linux kernel
C
32
16
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
471
465
Ascend Extension for PyTorch
Python
758
968
昇腾LLM分布式训练框架
Python
185
231
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
698
1.4 K
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
878
2.03 K
暂无描述
Dockerfile
780
5.08 K
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
70
22
本仓库是 Flutter SDK 与 Flutter Engine 的 OpenHarmony 适配版本,由 CPF-Flutter 团队维护。开发者可使用熟悉的 Flutter 技术栈开发 OpenHarmony 应用,3.35.7 及以后的适配版本可基于本仓库源码构建支持 OpenHarmony 的 Flutter Engine。
Dart
1.04 K
271
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed.
Get Started
Rust
2.08 K
216