AGENT

Claude与Codex跨Shell执行环境差异

2026/04/30 2 min read AGENT CLAUDE与CODEX跨SHELL执行环境差异

这就对上了——你现在看到的报错,是 Claude 的执行环境问题,不是 Codex 的问题


🧠 一句话结论

❗ Claude 的工具执行默认是 bash 环境
👉 而你在给它 PowerShell 命令

所以才会这样:

Get-Command ❌(bash 不认识)
Select-Object ❌(bash 不认识)

🔍 为什么会这样

Claude(尤其带 tools / MCP 的版本)通常是:

工具执行层 = Linux/bash 语义

哪怕你本机是 Windows。


👉 所以你现在的真实情况是:

你在 Windows
Claude 在“类 Linux shell”里执行

💣 这就导致

你写:

Get-Command ccswitch

Claude 实际在执行:

/usr/bin/bash -lc "Get-Command ccswitch"

👉 直接炸


🔥 正确用法(关键)

你必须明确告诉它:


✅ 用 PowerShell 包一层

用 shell 执行:
 
powershell -Command "Get-Command ccswitch"

✅ 或者:

powershell -Command "where ccswitch"

❌ 不要再直接写

Get-Command
Select-Object

🧠 为什么你会感觉“频繁报错”

因为你现在在两个系统之间切换:


🟢 Codex

✔ PowerShell 友好
✔ Windows 原生

🔴 Claude

✔ bash 默认
❌ 不认识 PowerShell 语法

👉 所以你会觉得:

同样命令
有时候能跑
有时候全报错

🎯 最核心区别(你要记住)

系统 默认 shell
Codex CLI PowerShell / Windows
Claude tools bash / Linux

💬 最后一刀

❗ 不是“Claude 有问题”
👉 是:

你在用 Windows 语法操作一个 Linux shell


如果你接下来要稳定用 Claude + 本地工具,我可以帮你做一件很关键的事:

👉 给你一套 “跨 bash / PowerShell 不出错的命令写法模板”

这样你以后不会再踩这个坑。