
---
url: /start/nushell.md
---

<h1 class="visually-hidden">Nushell</h1>

## 概述

Nushell 是由 Rust 驱动的 shell，提供现代风格的用户界面，并且支持强大的数据处理功能。x-cmd 工具集已引入 Nushell 以增强其功能和用户体验。

## 安装 x-cmd

::::ol
:::li 一键安装
通过 curl 或 wget 下载并在 Nushell 中安装 x-cmd：

```bash
curl https://get.x-cmd.com | sh
```

或

```bash
wget -O- https://get.x-cmd.com | sh
```
:::

:::li 已安装 x-cmd 的激活
如果已安装 x-cmd，但在 Nushell 找不到相关命令：

```sh
sh -c '. "$HOME/.x-cmd.root/X"; x upgrade latest; x nu --setup'
nu
```
:::
::::

## 主题定制

虽然 x-cmd [theme 模块](/mod/theme.md) 只支持 POSIX shell，但可以通过 x-cmd 轻松使用 ohmyposh 和 starship 主题：

```bash
x starship
```

```bash
x ohmyposh
```

x-cmd 分别开发了 [starship 模块](/mod/starship.md) 和 [ohmyposh 模块](/mod/ohmyposh.md)，提供自动安装配置、主题预览等功能，统一的主题控制命令让你轻松设置心仪的主题。

## `x nu --setup` 原理

当用户使用 `x nu --setup` 时，在 `$HOME/.config/nushell/env.nu` 中添加一行启动代码：

```
const ___X_CMD_ROOT = '$HOME/.x-cmd.root'; source $"($___X_CMD_ROOT)/local/data/nu/rc.nu"; # boot up x-cmd
```

这一行的作用：
- 引入增强函数
- 增加 PATH 路径
- 末尾有标识注释 `# boot up x-cmd.`

:::tip 配置建议
如果采用 x-cmd 安装了工具（如 starship, asdf），需要在 env.nu 进行激活或配置，建议在 x-cmd 激活代码**后面**添加配置代码。
:::

## FAQ

:::details 支持情况 {open}
1. **支持 pixi 的安装及自动激活**

2. **以 @ 开头的 alias 的支持情况**
   - 以 @ 开头的 alias 主要用于 LLM 类模块（如 chat 模块的 @gpt, @gemini, @o，writer 模块的 @zh, @en）
   - 由于 Nushell 不支持 @ 开头的 alias，writer 模块中的 alias 改为 `a:en`, `a:zh` 提供
   - 当前还无法通过 `x boot alias disable [c|xx|xw|xd|xg|xp|co|coco|chat|writer]` 禁用在 Nushell 启动时引入的 alias

**注意**：上述支持仍处于 Beta 功能阶段。
:::

:::details 当前问题 {open}
**pipe 问题**：尝试对 x 命令进行函数包装以获取 Nushell 环境变量时，在 pipe 的处理和判断方面会出现难以处理的问题。因此当前的 x 命令将关闭环境变量，转而采用通过文件传递，以保证 pipe 可以正常使用。
:::
