惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Vulnerabilities – Threatpost
雷峰网
雷峰网
GbyAI
GbyAI
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
MongoDB | Blog
MongoDB | Blog
博客园 - 聂微东
V
V2EX
Jina AI
Jina AI
Apple Machine Learning Research
Apple Machine Learning Research
C
CXSECURITY Database RSS Feed - CXSecurity.com
美团技术团队
Engineering at Meta
Engineering at Meta
T
Tenable Blog
P
Privacy & Cybersecurity Law Blog
Project Zero
Project Zero
Cloudbric
Cloudbric
Help Net Security
Help Net Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
LINUX DO - 热门话题
J
Java Code Geeks
WordPress大学
WordPress大学
S
Securelist
F
Full Disclosure
N
News and Events Feed by Topic
B
Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
I
InfoQ
P
Proofpoint News Feed
Hugging Face - Blog
Hugging Face - Blog
U
Unit 42
Google Online Security Blog
Google Online Security Blog
Spread Privacy
Spread Privacy
P
Proofpoint News Feed
宝玉的分享
宝玉的分享
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Schneier on Security
Schneier on Security
Google DeepMind News
Google DeepMind News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
月光博客
月光博客
Martin Fowler
Martin Fowler
T
Threat Research - Cisco Blogs
小众软件
小众软件
V2EX - 技术
V2EX - 技术
Last Week in AI
Last Week in AI
Stack Overflow Blog
Stack Overflow Blog
The Last Watchdog
The Last Watchdog
D
DataBreaches.Net

一个工匠

AI 发展临界点 - 快上车 流式响应(Chat):HTTP 响应体字节流的读取与解析 iPhone 截屏高效翻译 iPhone 侧载安装 Xcode Symbolic Debug AI 指北 投资风险收益评估 Mac 快速修改系统快捷键 Git Record passkey How to pay apple frameworks Mac - Command Line Tools DNS 的 CNAME 是如何工作的 WebRTC 的一些解释 SSE 指南 1.1.1.1、WARP 和 MASQUE 移动端换端方案与场景还原 设备发现 分辨率 - 像素密度 - HiDPI Mac 字体 ESP32 trump - 川普 币圈 - 虚拟货币 【旅游】富士山 【旅游】sakura(樱花) 【旅游】千岛湖 我的 2023 【Swift】中文词语纠错 计算机字符编码与内存编码 - Unicode、UTF8、String 从汇编角度理解 “函数调用栈” 和 “有栈协程” 在 Xcode 中更好的使用 Swift 通过 Swift Package 制作二进制库 Arc 浏览器 - 意外的惊喜 【Swift 三方源码 1】SwiftShell 高效的命令行工具 Swift 脚本开发环境搭建 rime - 小鹤双拼 【旅游】沿海旅游 (威海、青岛) 好记性远远不如烂笔头 高级语言小记 又一年高考 Vision 未来已来 致敬耗子哥 Socket 与 ICMP 对互联网隐私的一些想法 网络代理是如何工作的 (致敬 Surge) 又十年 - 至三十而立 双拼 - 少有的高回报效率技能 Vim 技巧 我的 2022 三年疫情五味杂陈 - 下 老梗 - 浏览器按回车后发生了什么 三年疫情五味杂陈 生活推荐清单 Shell 和进程 有计划的努力 内卷 不确定性 数学可以保障逻辑自洽 这些年我的软件清单 决定做一些改变 函数调用栈之彻底理解 锁 - 共享数据安全指↑ 江苏女有感 碎碎念 - 2022 碎碎念 - 2021 打算记录一些碎碎念 多重性格就是逆天改命 从 Core Foundation 看更大世界 TCP 数据传输过程分析 iOS main 文件中的 @autoreleasepool 的真实用途 多线程的难点在哪里 Objective-C 和 Runtime 早起打卡计划 ing 打比方 IM 和 Socket 的关系及 Heart 的必要性 如果我的人生突然只剩下 8 小时... 胡说八道之雪粉 Array 和 LinkedList 的深刻认知 Swift struct (值类型) 与 class (引用类型) 区别及三种传参机制深刻关系和使用 逃离信用卡和花呗 Swift_let_var_struct_class 网聚人的力量 - 网易 绿皮火车 喝酒十之八九会误事 HKong 胡说八道之云服务 互联网网络传输协议理解坑点 CPU 的制作 我心里一直有一个念想 网络基础协议 为什么 32 位操作系统只能用 4G 内存空间 努力和天赋 洗牙 RAC-Api-Summer iOS 内存原理 Block 闭包简查记录 《白夜行》 谈谈事件驱动 老博新开 祭首
Flash Open Terminal
海驴 · 2025-11-13 · via 一个工匠

问题 (TLDR):zsh 已经成为标配,但每次启动它都需要等待 1-2s,很烦。
问题 (Detail):.zshrc 配置中有很多耗时插件和功能,如 nvm、jenv 等等,打开终端很慢。所有 lazy load 等方案都会在各个旮旯里影响原有的启动逻辑,且维护成本高。

解决方案:ITerm2 & Tmux。

场景还原:

  1. .zshrc 有很多功能需求配置,已经影响到了 terminal 启动速度。
  2. 工作期间需要开启 n 个 app 画面,非常乱。而对于 ternimal 总是习惯性使用完 kill。每次打开都会 waiting 很久。
  3. 终端使用 Warp 和 Iterm2,app launch 使用 Raycast。

解决方案:

  1. 使用 iterm2 创建一个 profile,设置为 default (即 app 启动后默认打开当前 profile)。

  2. General - Command 选择 Command,命令配置:

    1
    /usr/bin/env zsh -c '/opt/homebrew/bin/tmux new -As dev'
  3. tmux 使用较简单,了解下就可以熟练操作。

  4. 后续工作中需要快速执行命令,通过 Raycast 打开 iterm2 即可,0ms 延迟启动。

  5. 使用完可直接 kill iterm2 窗口,依靠 tmux 做会话保持。

  6. 其他场景,按个人喜好使用 Warp 即可。

结果:

Iterm2 自身启动耗时 0ms,tmux attach sesstion 0ms。 配合一下,终端秒开,快速执行工作生活中的小命令,再也不用处理 .zshrc 多配置启动慢问题。

扩展:

shell 启动参数

  • -l:以登录 shell 启动,读取登录相关配置(如 ~/.zprofile),保证 PATH、环境变量齐全。
  • -i:以交互式 shell 启动,启用提示符、job control,并读取交互配置(如 ~/.zshrc)。
  • -c:执行后面的一条命令字符串并退出,常与 -l-i 组合,用来在「完整环境」里执行单条命令。

配置了 -lic,就会走完整的模拟器登录交互环境,保证各种环境变量、插件都能正常加载。这也是文档开头说到的问题根源。即 .zshrc 等配置启动太耗时了。
配置 -c,就在裸环境执行 shell 命令,非常快。但这种场景下是裸环境,各种 shell 配置都没有。只应该在必要的场景使用。

更多 Command 配置示例

  • -lic 示例:

    /usr/bin/env zsh -c "/opt/homebrew/bin/tmux has-session -t dev 2>/dev/null && /opt/homebrew/bin/tmux attach -t dev || zsh -lic '/opt/homebrew/bin/tmux new -s dev'"

    完全等价于:

    /usr/bin/env zsh -c '/opt/homebrew/bin/tmux new -As dev'

    解析:tmux Check 和 Attach 的时候使用的 -c,new 的时候,tmux 会在 session 内部通过 -lic 启动 shell (tmux 默认行为)。

  • tmux 跟随待执行命令:

    /usr/bin/env zsh -c '/opt/homebrew/bin/tmux new -As xxx "zsh -lic \"exec npx xxx@latest\""'

    解析:tmux new session 的时候,如果跟随了待执行命令,就不在走上面提供的默认行为 (-lic),即 tmux 默认在裸环境下执行待执行命令。需要手动补齐登录交互环境,即 zsh -lic "exec npx xxx@latest"