首页
/ Starship 进阶安装指南:Chocolatey、Termux、Funtoo 与 Nix 的专项安装路径及源码验证

Starship 进阶安装指南:Chocolatey、Termux、Funtoo 与 Nix 的专项安装路径及源码验证

2026-09-06 18:20:55作者:裴麒琰

本文以 Starship 仓库中的进阶安装文档(Advanced Installation,英文原版为 docs/installing/README.md)为主体,系统讲解在 Chocolatey(Windows)、Termux(Android)、Funtoo Linux 与 Nix/NixOS 等特殊平台上安装 Starship 的完整步骤,并结合 install/install.sh 官方安装脚本与 install/windows/choco/ 打包配置中的源码证据,帮你理解每一步命令背后的实际行为,确保安装与 Shell 初始化两个环节都能一次到位。

安装的两个核心步骤

Starship 的安装本质上只有两件事,这一原则贯穿所有平台:

  1. starship 二进制文件装到本机
  2. 修改 Shell 的启动脚本(init scripts),让 Shell 使用 Starship 生成提示符

对于绝大多数用户,主指南页面docs/guide/README.md 中 “🚀 Installation” 一节)的标准安装说明已经足够。而进阶安装文档的定位是:由于平台数量极多,部分专项平台的安装方式没有收录进主 README,这些由社区补充的安装指引就是进阶文档的主要内容。如果你的平台恰好不在其中,文档也建议社区成员在解决后把方案补充进该文档。

通用替代路径:官方一键安装脚本

在进入专项平台之前,值得先了解仓库自带的通用安装脚本 install/install.sh。它通过 detect_platform()detect_arch() 自动识别平台与架构,从 Release 下载对应二进制并解压到目标目录。脚本支持的完整目标三元组(SUPPORTED_TARGETS,见 install/install.sh#L16-L22)包括:

x86_64-unknown-linux-gnu   x86_64-unknown-linux-musl
i686-unknown-linux-musl    aarch64-unknown-linux-musl
arm-unknown-linux-musleabihf x86_64-apple-darwin
aarch64-apple-darwin       x86_64-pc-windows-msvc
i686-pc-windows-msvc       aarch64-pc-windows-msvc
x86_64-unknown-freebsd     riscv64gc-unknown-linux-musl

从源码结构看,脚本对 Linux 统一使用 unknown-linux-musl 静态编译产物以避免动态链接问题(见 install/install.sh#L225 处的注释)。脚本还支持覆盖默认行为的选项(见 install/install.sh#L155-L172):

选项 作用 默认值
-V, --verbose 启用详细输出(含解包明细) 关闭
-f, -y, --force, --yes 跳过安装确认提示 不跳过
-p, --platform 覆盖自动识别的平台 自动检测
-b, --bin-dir 覆盖二进制安装目录 /usr/local/bin
-a, --arch 覆盖自动识别的架构 自动检测
-B, --base-url 覆盖 Release 下载基础 URL 官方 Release 地址
-v, --version 安装指定版本(如 v1.2.3 latest

脚本内置了多项防错机制:verify_shell_is_posix_or_exit() 会拒绝在 zsh 或非 POSIX 模式的 bash 下执行(要求改用 sh);check_bin_dir() 会检查目标目录存在、可写并位于 $PATH 中,不可写时通过 sudo 提权安装;is_build_available() 会在目标三元组不在上表时直接报错退出。因此,当你的平台不在专项清单里、但属于上述 12 个目标之一时,这个脚本是首选路径。

通过 Chocolatey 安装(Windows)

前置条件

先到 Chocolatey 官方安装页完成 Chocolatey 本体的安装,再执行后续步骤。

安装命令

choco install starship

源码级佐证:Chocolatey 包的内部结构

仓库中保留了 Chocolatey 包的完整定义,可以精确说明 choco install starship 到底做了什么:

  • install/windows/choco/starship.nuspec:包元数据,声明包 id 为 starship、作者为 Starship Contributors、摘要为 “The cross-shell prompt for astronauts”,并将 tools 目录整体打包(<file src="tools\**" target="tools" />)。
  • install/windows/choco/chocolateyInstall.install.ps1:安装脚本。从源码看,该包以 MSI 安装包为分发载体(fileType = 'msi'),分别为 i686x86_64 两个架构提供下载 URL 与 sha256 校验和(checksumType = 'sha256'),静默安装参数为 /qn /norestart,并允许 030101641 三种退出码(validExitCodes,其中 3010 表示“成功但需重启”)。
$packageArgs = @{
    packageName    = $packageName
    fileType       = 'msi'
    url            = $url_i686_msi
    url64bit       = $url_x86_64_msi
    checksum       = $checksum_i686_msi
    checksum64     = $checksum_x86_64_msi
    checksumType   = 'sha256'
    softwareName   = 'starship*'
    silentArgs     = "/qn /norestart ..."
    validExitCodes = @(0, 3010, 1641)
}
Install-ChocolateyPackage @packageArgs

该脚本在安装完成后会打印第二段提示:把 Invoke-Expression (&starship init powershell) 追加到 PowerShell 配置文件 Microsoft.PowerShell_profile.ps1 末尾——这正是安装第二步(Shell 初始化)的具体落地方式,说明 Chocolatey 通道只负责“装二进制”,init 步骤仍由用户完成。

通过 Termux 安装(Android)

在 Android 的 Termux 环境中,直接通过 Termux 软件包管理器安装即可:

pkg install starship

Termux 提供的是面向 Android 的独立包仓库,该命令会完成二进制安装与依赖处理;安装完成后同样需要执行第二步——在 Termux 使用的 Shell(通常为 bash)启动脚本中加入 eval "$(starship init bash)"

通过 Portage 安装(Funtoo Linux)

Funtoo Linux 上可从 Funtoo 社区的 core-kit 仓库经 Portage 安装 app-shells/starship

emerge app-shells/starship

包名沿用 Gentoo/Funtoo 的 app-shells/ 分类,与主指南中 Gentoo Packages 的写法一致,属于发行版官方包管理通道的标准用法,无需额外配置。

通过 Nix 安装

Nix 生态提供了三条路径,覆盖“命令式”到“声明式单用户/系统级”的完整谱系。

命令式:直接安装

nix-env -iA nixos.starship

(进阶文档原文使用 nixos.starship 属性;主指南页面在 NixOS 条目中写作 nix-env -iA nixpkgs.starship,两者均为从 Nix 属性集按属性路径安装同一软件,可按所用 Nix 版本属性集名选择。)

声明式、单用户:通过 home-manager

home.nix 中启用 programs.starship 模块,并写入配置(配置最终落到 ~/.config/starship.toml):

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

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

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

示例中给出了三类典型配置的写法:add_newline 控制提示符前是否添加空行;character 模块的 success_symbol / error_symbol 自定义成功与失败时的箭头符号及样式( 即 starship 的样式化字符串语法);package.disabled 可直接关闭语言包版本模块。然后执行:

home-manager switch

从源码结构看,Starship 的模块配置(如 characterpackage)与 src/configs/ 目录下的同名配置结构体一一对应,home-manager 写入的 TOML 会被 Starship 启动时按 src/config.rs 解析,因此声明式配置与手工编辑 starship.toml 效果等价。

声明式、系统级:NixOS

configuration.nixenvironment.systemPackages 中加入 pkgs.starship,然后执行:

sudo nixos-rebuild switch

系统级安装对全部用户生效,之后每个用户的 Shell 仍需各自完成初始化步骤。

安装第二步的验证:各 Shell 的初始化命令

二进制就位只是完成一半,starship init <shell> 会生成针对当前 Shell 的启动代码(如 src/init/ 下的 starship.bashstarship.zshstarship.fish 等脚本),这是 Starship 跨 Shell 工作的核心机制。install/install.shprint_install() 函数在安装结束后会逐 Shell 打印初始化指引,以下是其完整内容,可直接用于核对自己的配置:

Shell 追加到文件末尾 追加内容
Bash ~/.bashrc eval "$(starship init bash)"
Zsh ~/.zshrc eval "$(starship init zsh)"
Ion ~/.config/ion/initrc eval $(starship init ion)
Fish ~/.config/fish/config.fish `starship init fish
Tcsh ~/.tcshrc eval `starship init tcsh`
Xonsh ~/.xonshrc execx($(starship init xonsh))
Elvish ~/.config/elvish/rc.elv eval (starship init elvish)
Nushell nu 配置文件($nu.config-path 可查) `mkdir ($nu.data-dir
PowerShell $PROFILE 指向的配置文件 Invoke-Expression (&starship init powershell)
Cmd %LocalAppData%\clink\starship.lua(需 Clink v1.2.30+) load(io.popen('starship init cmd'):read("*a"))()

两个版本前提值得注意:安装脚本对 Elvish 标注 “Only elvish v0.17 or higher is supported”(主指南页面表述为 v0.18+),对 Nushell 标注 “Only Nushell v0.96 or higher is supported”。

适用前提与限制

  • 进阶文档中的四条专项路径(Chocolatey、Termux、Funtoo、Nix)面向的是标准安装未覆盖的特定平台;若你的平台在 SUPPORTED_TARGETS 清单内,优先使用 install/install.sh 或主指南中的包管理器表格,可保证版本最新。
  • 包管理器路径的版本取决于各平台官方仓库(Chocolatey、Termux packages、Funtoo core-kit、Nixpkgs)的收录与更新节奏,与 Starship 官方 Release 可能存在滞后。
  • 无论哪条安装路径,Shell 初始化都是独立的一步;未执行 starship init 时,starship 命令可用但提示符不会生效,这是所有专项安装方式共同的行为边界。
  • 进阶文档本身是社区贡献性质,遇到未收录平台时,按文档建议将已验证的方案补充回该文档,有助于后续使用者。
登录后查看全文
热门项目推荐
相关项目推荐