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

推荐订阅源

H
Hacker News: Front Page
S
Secure Thoughts
N
News | PayPal Newsroom
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
Threatpost
N
News and Events Feed by Topic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
A
Arctic Wolf
Cisco Talos Blog
Cisco Talos Blog
V2EX - 技术
V2EX - 技术
L
LINUX DO - 热门话题
C
Cyber Attacks, Cyber Crime and Cyber Security
P
Proofpoint News Feed
TaoSecurity Blog
TaoSecurity Blog
N
News and Events Feed by Topic
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
NISL@THU
NISL@THU
H
Heimdal Security Blog
Webroot Blog
Webroot Blog
Martin Fowler
Martin Fowler
The Hacker News
The Hacker News
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
A
About on SuperTechFans
Stack Overflow Blog
Stack Overflow Blog
B
Blog RSS Feed
Vercel News
Vercel News
Blog — PlanetScale
Blog — PlanetScale
Google Online Security Blog
Google Online Security Blog
Schneier on Security
Schneier on Security
Cyberwarzone
Cyberwarzone
小众软件
小众软件
V
V2EX
K
Kaspersky official blog
Security Archives - TechRepublic
Security Archives - TechRepublic
博客园 - 三生石上(FineUI控件)
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
C
Cisco Blogs
S
Schneier on Security
Recorded Future
Recorded Future
阮一峰的网络日志
阮一峰的网络日志
AI
AI
Microsoft Security Blog
Microsoft Security Blog
H
Help Net Security
Simon Willison's Weblog
Simon Willison's Weblog
I
InfoQ
G
Google Developers Blog
博客园_首页
Hugging Face - Blog
Hugging Face - Blog

一个工匠

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"