结论:export-env 和 load-env 混用可能会导致环境变量不可预测。
现在是 2025/05/24
win

linux

环境:
- win10 + nushell
- nixos25 + nushell
我在俩个环境,都直接移除 load-env,使用 $env。结果:nushell + starship Jetpack 显示正常
nu
cd $nu.data-dir # 进入 C:\Users\<??>\AppData\Roaming\nushell
# 找到你自己的 starship.nu 文件
# load-env { "BOB": "FOO", "JAY": "BAR" }
# 不建议使用上述语法改变 nushell $env 环境
export-env {
$env.STARSHIP_SHELL = "nu"
# $env.STARSHIP_CONFIG = ...
$env.STARSHIP_SESSION_KEY = (random chars -l 16)
# 一但 env 加载完成,starship starship_bin 寻找源文件的时间相差无几,我推荐直接使用 starship
# let starship_bin = (which starship | get 0.path)
$env.PROMPT_MULTILINE_INDICATOR = (
^starship prompt --continuation
)
# 清空默认提示符,完全使用 Starship
$env.PROMPT_INDICATOR = ""
# 左提示符(替换空格为-)
$env.PROMPT_COMMAND = {||
let starship_left = (
^starship prompt
--cmd-duration $env.CMD_DURATION_MS
$"--status=($env.LAST_EXIT_CODE)"
--terminal-width (term size).columns
)
$starship_left
}
# 右提示符(替换空格为-)
$env.PROMPT_COMMAND_RIGHT = {||
(
^starship prompt
--right
--cmd-duration $env.CMD_DURATION_MS
$"--status=($env.LAST_EXIT_CODE)"
--terminal-width (term size).columns
)
}
# ◄ 11s ◎ config nu --doc | nu-highlight | bat
# 查看,nu初始化配置,存在相应的初始化,可以直接放弃假设代码(写起来真麻烦)
# 确保右提示符显示在最后一行
# $env.config = ( $env.config? | default {} | merge { render_right_prompt_on_last_line: true } )
$env.config.render_right_prompt_on_last_line = true
}
Nushell 对环境变量和闭包的求值顺序有时候比较严格,export-env 和 load-env 混用可能会导致环境变量不可预测。
load-env 可能是设计用来加载静态的环境变量,不适合里面写动态的闭包命令。
1204

被折叠的 条评论
为什么被折叠?



