当前位置: 首页 > news >正文

Nushell + AtomCode 配置踩坑记录

摘要:本文记录了在 macOS 上配置 Nushell 0.113.1 与 AtomCode 时遇到的 5 个典型坑,包括配置目录路径错误、验证方式误区、PATH 继承问题、配置项名称混淆以及默认值覆盖问题,并给出最终生效配置。

1. 背景

日期:2026-07-07
环境:macOS,Nushell 0.113.1(Homebrew),nu/opt/homebrew/bin/nu
目标:① nushell 里能用atomcode命令;② 启动不显示 welcome message;③ 行末不显示时间

2. 坑 1:nushell 实际加载的配置目录不是~/.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. 坑 2:nu -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)"' # => banner=false

或者用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 found

4.2 真因

atomcode~/.local/bin/,该目录是被~/.zshrcexport PATH="~/.local/bin:$PATH"加进 PATH 的。但 macOS 终端 App(Terminal/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,不是banner

5.1 现象

nu -c '$env.config.banner'报:

Error: nu::shell::name_not_found · `-- did you mean 'show_banner'?

5.2 真相

关闭 welcome message 的配置项叫show_banner(bool|string):

$env.config.show_banner = false # 不显示 $env.config.show_banner = true # 显示完整 banner(默认) $env.config.show_banner = "short" # 只显示启动耗时

查文档:

config nu --doc | nu-highlight | less -R

6. 坑 5:GitHub issue #8698——show_banner被文件末尾的默认值覆盖

6.1 现象

有人在config.nu开头写$env.config.show_banner = false,banner 依然出现。

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/bin"

7.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.nu
  • PATH 相关的放env.nu(无条件加载),不依赖外部 shell 的~/.zshrc
  • 关 banner 的配置项是$env.config.show_banner,注意被文件末尾默认值覆盖
http://www.cnnetsun.cn/news/3222696.html

相关文章:

  • milvus | 第 10 章:写入链路一:Insert/Upsert/Delete 从 Proxy 到 WAL
  • 波特图基础知识
  • D3KeyHelper终极指南:暗黑3专业级按键宏与游戏助手完整教程
  • Trae IDE不是传统IDE:嵌入式Java开发工作台深度解析
  • 用了3天豆包做视频,才发现最痛的不是“不会写提示词“
  • Ubuntu部署AI-Berkshire股票分析估值工具
  • 林沛群机器人之运动学笔记—0-1
  • 功能性乳营养品类关注度攀升 牛初乳选品避坑指南成大众关注焦点
  • 地形课程与等变网络:让机器人真正理解物理世界
  • 2026年靠谱苏州本地道闸/摆闸/车辆识别系统安装-苏州智安达(17年老牌一级资质企业)
  • 三轴运动追踪系统硬件选型与数据融合算法详解
  • IIM-20670运动传感器与MKV42F256VLH16 MCU的高精度运动跟踪方案
  • C盘满了别瞎删!哪些文件能清、哪些系统文件绝对不能动
  • Oracle 23c Free 容器部署:3分钟启动与5个关键环境变量配置
  • 西门子 PLC 与 C# 通信
  • Anki卡片美化革命:3步打造高颜值记忆卡片
  • BetterNCM安装器:3分钟解锁网易云音乐的隐藏功能
  • 开发一个电商小程序多少钱?2026年7月全球精选4款AI/SAAS电商小程序开发工具实测对比,含零代码SAAS、AI编程、源码定制交付
  • 网盘下载新体验:如何用直链助手告别限速烦恼
  • BMI160与PIC18F56K42的运动数据采集系统设计
  • Blender 3MF插件终极指南:一键导入导出3D打印文件的完整解决方案
  • Kimi API调用入门:63行Node.js代码实现轻量级Claw调用器
  • BMI323 IMU与PIC18的运动控制方案实现
  • STM32G0B1RE与BMI160传感器开发指南
  • BetterJoy终极指南:3步实现Switch手柄在PC上的完美连接方案
  • BMI160 IMU与R7FA4M1AB3CFM MCU运动数据采集系统设计
  • 以太网MAC帧深度解析:从48位地址到3类帧(单播/广播/组播)的Wireshark鉴别
  • 抖音批量下载工具完整指南:免费无水印视频下载实战教程
  • 终极实战指南:PUBG罗技鼠标宏压枪脚本配置与优化方案
  • 计算机毕业设计之基于Web的私人定制礼品网站的设计与实现