Shell 选择主要取决于脚本兼容性、交互体验、管道数据模型和目标平台。交互 Shell 可以追求补全和高亮,生产脚本则通常优先考虑稳定、可移植和团队熟悉度。
方案对比
| Shell | 平台 | 管道模型 | 主要特点 | 适合场景 |
|---|---|---|---|---|
| Bash | Unix、Linux、macOS、WSL | 纯文本 | POSIX 兼容范围广、脚本生态最大 | 通用脚本和 CI |
| Zsh | Unix、Linux、macOS | 纯文本 | 补全、纠错和插件生态强 | macOS 交互开发 |
| Fish | Unix、Linux、macOS、Windows | 纯文本 | 高亮和自动建议开箱即用 | 交互使用体验优先 |
| PowerShell | Windows、Linux、macOS | .NET 对象 | 参数补全、模块和对象管道 | Windows 管理和跨平台自动化 |
| Nushell | Unix、Linux、macOS、Windows | 结构化数据 | 表格、列表和类似 SQL 的数据处理 | 结构化命令行数据 |
| Elvish | Unix、Linux、macOS、Windows | 结构化值 | 现代语法和值管道 | 愿意采用新语法的用户 |
| Xonsh | Unix、Linux、macOS、Windows | Python / Shell 混合 | 在 Shell 中直接使用 Python | Python 自动化和交互 |
脚本兼容性优先选 Bash;macOS 日常交互选 Zsh;Windows 管理选 PowerShell;想处理结构化输出再看 Nushell。不要因为交互体验选择了 Fish 或 Nushell,就把生产脚本默认改写成它们的专有语法。 相关主题:项目选型。