首页
/ Starship 进阶安装指南:Chocolatey、Termux、Funtoo 与 Nix 平台的部署与 Shell 初始化实践

Starship 进阶安装指南:Chocolatey、Termux、Funtoo 与 Nix 平台的部署与 Shell 初始化实践

2026-09-07 17:51:39作者:董灵辛Dennis

本文基于 Starship 官方文档中的「Advanced Installation(进阶安装)」章节,系统讲解在 Chocolatey(Windows)、Termux(Android)、Funtoo Linux 和 Nix/NixOS 这四类主流分发渠道上获取 starship 二进制的完整方法,并结合开源仓库中的安装包脚本与 starship init 的源码实现,说明「获取二进制」与「让 shell 调用它生成 prompt」这两步各自的底层机制,读完后你可以在任意受支持平台上完成 Starship 的安装与启用。

安装 Starship 的两步模型

根据 进阶安装文档 的定义,安装 Starship 需要做两件事:

  1. 获取 starship 二进制文件到你的计算机上;
  2. 告诉你的 shell 使用 starship 二进制作为 prompt,方法是修改 shell 的 init(初始化)脚本。

对大多数用户来说,官方主指南(英文原版为 docs/guide/README.md)中的标准安装流程即可满足需求。本文面向 Chocolatey、Termux、Funtoo、Nix 等更专门的发行平台,补充主文档未覆盖的分发渠道细节。

值得注意的是,第二步之所以跨平台通用,是因为 starship init <shell> 采用了两阶段初始化设计。从 src/init/mod.rsinit_stub 函数可以看到:第一阶段只向 shell 输出一行简短的引导命令(stub),例如 bash 下是:

eval -- "$({starship} init bash --print-full-init)"

该命令再执行第二阶段 --print-full-init,输出并求值完整的初始化脚本。源码注释(src/init/mod.rs)解释了两阶段设计的原因:直接 eval 一段未正确引用的 shell 脚本会导致整段被当作单行求值(注释会吞掉后续内容、到处需要分号),而通过 source + 进程替换的方式,可以保留脚本的可读性、可注释性和可调试性。init_stub 中明确列出了当前支持的 shell:bash、zsh、fish、powershell、ion、elvish、tcsh、nu、xonsh、cmdsrc/init/mod.rs),这也是所有安装文档最终要落到的统一入口。

Chocolatey(Windows PowerShell 生态)

前置条件

先安装 Chocolatey 包管理器(按其官网安装说明操作),然后执行:

choco install starship

仓库中的 Chocolatey 包实现

仓库 install/windows/choco/ 目录下保存了该包的完整定义,可以佐证上面这条命令背后发生的事情:

  • starship.nuspec 声明了包元数据:包 id 为 starship,标签为 powershell prompt starship pwsh,作者为 Starship Contributors,无需许可协议确认(requireLicenseAcceptance=false)。
  • update.ps1 显示发版时会生成三个包starship 是一个元包(metapackage),它依赖锁定精确版本的 starship.install 子包;另外还有独立的 starship.portable(便携版)和 starship.install(MSI 安装版)两个变体。脚本还会为 starship-x86_64-pc-windows-msvcstarship-i686-pc-windows-msvc 的 zip/msi 两种产物分别计算 SHA256 校验和(update.ps1)。
  • chocolateyInstall.install.ps1 以静默方式安装 MSI(/qn /norestart),并接受 0、3010、1641 三种退出码(后两者分别表示"需重启完成"与"需重启以覆盖文件")。
  • 安装脚本最后会打印一条提示(chocolateyInstall.install.ps1):将以下内容追加到 ~\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 文件末尾,以完成第二步"让 shell 使用 starship":
Invoke-Expression (&starship init powershell)

这一行与 主指南 中 "Step 2. Set up your shell to use Starship" 一节给出的 PowerShell 初始化方式完全一致,即 Chocolatey 只负责分发二进制,prompt 生效仍依赖 starship init 机制。

Termux(Android 平台)

在 Termux 环境中直接通过其软件源安装:

pkg install starship

这里有一个与源码相关的细节:Termux 是 Android 上的模拟 POSIX 环境,而 bash 的标准引导方式(source <(...) 进程替换)在部分环境中不可用。src/init/mod.rs 的注释专门记录了这一点:macOS 默认的 bash 3.2 不支持 source 搭配进程替换;而 Git BashTermux 这类环境虽然提供了较新的 bash(注释中记录 Termux 搭载 bash 5.0),但由于 bash ≤ 5.0 的 POSIX 模式不支持 <(...),因此 Starship 统一改用兼容性更好的 eval -- "$(...)" 引导形式,该形式从 bash 3.2 到最新版本均可工作。也就是说,在 Termux 上安装完成后,按主指南写入 eval "$(starship init bash)" 即可可靠生效。

Funtoo Linux

在 Funtoo Linux 上,starship 可通过 Portage 包管理器从 core-kit 仓库安装:

emerge app-shells/starship

安装类别为 app-shells,与 shell 提示工具的定位一致。

Nix / NixOS

Nix 生态提供三种安装方式,可按"命令式"与"声明式"区分。

命令式安装

临时/交互式安装,无需修改任何配置:

nix-env -iA nixos.starship

声明式(单用户,通过 home-manager)

home.nix 中启用 programs.starship 模块,并把你的个性化设置一并声明进去(以下示例完整继承自 进阶安装文档):

{
  programs.starship = {
    enable = true;
    # Configuration written to ~/.config/starship.toml
    settings = {
      # add_newline = false;

      # character = {
      #   success_symbol = "➜";
      #   error_symbol = "➜";
      # };

      # package.disabled = true;
    };
  };
}

然后执行:

home-manager switch

settings 中的内容会被写入 ~/.config/starship.toml,上面注释掉的示例分别对应:是否在 prompt 前输出换行、成功/失败命令的 character 提示符号(带样式)、以及禁用 package 模块。这展示了 Nix 声明式安装的独特优势——二进制分发与 prompt 配置在同一个配置文件里完成声明,而传统方式下第二步(init 脚本)与配置仍需手动维护。

声明式(系统级,NixOS)

configuration.nix 中把 pkgs.starship 加入 environment.systemPackages,随后执行:

sudo nixos-rebuild switch

安装完成后的统一启用方式

无论通过哪个渠道拿到二进制,第二步都遵循同一模式:向 shell 的初始化文件追加对应的一行 starship init 语句。以 主指南 的 "Step 2" 一节为例,各 shell 的写法为:

Shell 追加到初始化文件的内容
Bash eval "$(starship init bash)"(写入 ~/.bashrc 末尾)
Cmd 借助 Clink (v1.2.30+),在 %LocalAppData%\clink\starship.lua 中写 load(io.popen('starship init cmd'):read("*a"))()
PowerShell Invoke-Expression (&starship init powershell)
Zsh eval "$(starship init zsh)"
Fish starship init fish | source
其他 Elvish、tcsh、Nushell、xonsh、ion、Lua 等同样各有一行式引导

从源码结构看,每一行引导命令最终都由 src/init/mod.rsinit_stub 的各分支生成,::STARSHIP:: 占位符会被替换为 starship 二进制的实际路径(src/init/mod.rs);在 Cygwin/MSYS 一类的 POSIX 模拟环境下,还会尝试调用 cygpath 将 Windows 路径转换为 POSIX 路径以保证脚本正确引用二进制(src/init/mod.rs)。这也解释了为什么本文列出的各平台安装方式最终都能收敛到同一套 starship init 机制——分发渠道负责"拿到二进制",两阶段 init 负责"跨 shell 生效"。

小结

  • Chocolateychoco install starship,仓库内 starship.nuspecupdate.ps1 揭示了其元包 + 安装/便携双变体的发布结构;
  • Termuxpkg install starship,bash 引导路径在 src/init/mod.rs 中有针对其 bash 版本的专门兼容性处理;
  • Funtooemerge app-shells/starship
  • Nix:命令式 nix-env -iA nixos.starship;home-manager 声明式可顺带声明 ~/.config/starship.toml 配置;NixOS 系统级则进 environment.systemPackagesnixos-rebuild switch

完成上述任一路径后,再按 shell 类型追加一行 starship init <shell> 引导语句,Starship 的 prompt 即可在对应平台上启用。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.14 K
2.75 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
857
1.35 K
docsdocs
暂无描述
Markdown
897
5.81 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
531
596
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
920
1.84 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.79 K
1.02 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.36 K
1.46 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.02 K
519
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
548
390