Nushell + AtomCode 配置踩坑记录 📅 2026/7/8 12:42:22 摘要本文记录了在 macOS 上配置 Nushell 0.113.1 与 AtomCode 时遇到的 5 个典型坑包括配置目录路径错误、验证方式误区、PATH 继承问题、配置项名称混淆以及默认值覆盖问题并给出最终生效配置。1. 背景日期2026-07-07环境macOSNushell 0.113.1Homebrewnu在/opt/homebrew/bin/nu目标① nushell 里能用atomcode命令② 启动不显示 welcome message③ 行末不显示时间2. 坑 1nushell 实际加载的配置目录不是~/.config/nushell/2.1 现象在~/.config/nushell/env.nu里写$env.PROMPT_COMMAND_RIGHT {|| }毫无效果——行末时间照旧显示。2.2 真相macOS 上 nushell 0.113 加载的默认配置目录是~/Library/Application Support/nushell/不是~/.config/nushell/后者是 Linux 的路径。确认当前实际加载目录nu $nu.default-config-dir # /Users/user/Library/Application Support/nushell~/.config/nushell/里那两个文件根本没被加载写了等于白写。2.3 修复所有改动都放到~/Library/Application Support/nushell/下的env.nu/config.nu。3. 坑 2nu -c不加载config.nu用它验证配置会误判3.1 现象在config.nu里设了$env.config.show_banner false跑nu -c $env.config.show_banner返回true看似没生效。3.2 真相nu -c ...非交互式脚本模式根本不加载config.nu它读的是内置默认值。所以用nu -c查$env.config.show_banner永远是默认的true会让人误以为设置没生效。3.3 正确验证方式用nu -e ...执行命令后进入交互式 shell会加载config.nu。nu -e print $banner($env.config.show_banner) # bannerfalse或者用expect模拟 TTY 启动真交互式会话来肉眼确认。4. 坑 3新开终端标签页报atomcode not found但旧会话里好好的4.1 现象在已开的终端里 nushell 能找到atomcodewhich atomcode命中~/.local/bin/atomcode。但新开一个终端标签页后启动 nushell跑atomcode报Error: nu::shell::external_command × External command failed · Command atomcode not found4.2 真因atomcode在~/.local/bin/该目录是被~/.zshrc里export PATH~/.local/bin:$PATH加进 PATH 的。但 macOS 终端 AppTerminal/iTerm新开标签页时未必重跑~/.zshrc——尤其当 shell 被设成「非登录」模式或只读~/.zprofile而该文件是空的时新标签页拿到的是 GUI 进程继承来的精简 PATH不含~/.local/bin。佐证launchctl getenv PATH输出为空说明 GUI 进程层根本没设 PATH新标签页的 PATH 全靠 zsh 启动文件不保证跑~/.zshrc。4.3 修复不依赖外部 shell 是否跑过~/.zshrc在 nushell 的env.nu每次启动无条件加载早于config.nu里自己加 PATH# ~/Library/Application Support/nushell/env.nu use std/util path add path add ~/.local/bin验证故意给个不含~/.local/bin的精简外部 PATH模拟最坏情况PATH/opt/homebrew/bin:/usr/bin:/bin nu -e which atomcode | get command | print # atomcode ← 仍可见5. 坑 4配置项名是show_banner不是banner5.1 现象跑nu -c $env.config.banner报Error: nu::shell::name_not_found · -- did you mean show_banner?5.2 真相关闭 welcome message 的配置项叫show_bannerbool|string$env.config.show_banner false # 不显示 $env.config.show_banner true # 显示完整 banner默认 $env.config.show_banner short # 只显示启动耗时查文档config nu --doc | nu-highlight | less -R6. 坑 5GitHub issue #8698——show_banner被文件末尾的默认值覆盖6.1 现象有人在config.nu开头写$env.config.show_banner falsebanner 依然出现。6.2 真因nushell 安装时生成的默认config.nu文件末尾自带$env.config.show_banner true写在开头的false被末尾的true覆盖。6.3 修复把自己的设置放在文件末尾或删掉默认那行true。可用config nu命令打开编辑器修改。7. 最终生效配置7.1~/Library/Application Support/nushell/env.nu# 每次启动无条件加载早于 config.nu # 不依赖外部 shell 是否跑过 ~/.zshrc自己确保 ~/.local/bin 在 PATH 里 use std/util path add path add ~/.local/bin7.2~/Library/Application Support/nushell/config.nu在注释段后追加# 关闭启动 welcome message $env.config.show_banner false 清空右侧 prompt去掉行末时间段 $env.PROMPT_COMMAND_RIGHT {|| }8. 总结配置放对目录macOS 是~/Library/Application Support/nushell/不是~/.config/nushell/验证用nu -e别用nu -c后者不加载config.nuPATH 相关的放env.nu无条件加载不依赖外部 shell 的~/.zshrc关 banner 的配置项是$env.config.show_banner注意被文件末尾默认值覆盖