
Codex CLI 安裝后 PowerShell 找不到命令檢查 PATH 和舊版本安裝或升級(jí) Codex CLI 后如果 PowerShell 找不到codex或codex --version仍是舊版本先看當(dāng)前 PowerShell 實(shí)際解析到哪個(gè)入口。安裝命令正常結(jié)束不等于當(dāng)前窗口已經(jīng)切到新入口在確認(rèn)來源前也不要繼續(xù)疊加安裝。PATH 是系統(tǒng)查找命令時(shí)依次檢查的一組目錄。這里檢查 PATH是為了確認(rèn) PowerShell 會(huì)搜索哪些目錄、最終選擇哪個(gè)codex以及它是否屬于剛安裝或剛更新的來源。這篇只處理 PowerShell 中的命令解析、安裝來源和版本。登錄、配置或模型請(qǐng)求失敗屬于后續(xù)問題不要通過反復(fù)修改 PATH 解決?,F(xiàn)象可能卡點(diǎn)要確認(rèn)什么先做什么新舊 PowerShell 都找不到預(yù)期入口也無法確認(rèn)沒有留下可用入口文件不存在還是 PowerShell 找不到回到原安裝來源確認(rèn)入口仍不存在時(shí)再恢復(fù)安裝暫不查版本新窗口能找到舊窗口找不到舊會(huì)話未刷新 PATH兩個(gè)窗口的解析結(jié)果是否不同使用新窗口繼續(xù)不修改 PATH入口存在新窗口仍找不到入口目錄不在當(dāng)前 Windows PATHPowerShell 是否會(huì)搜索該目錄只處理已確認(rèn)的目錄或安裝來源第一項(xiàng)是 Alias 或 FunctionShell 定義搶占codex被遮住的外部入口在哪里定位定義來源不卸載 Codex能運(yùn)行但版本舊或候選跨不同父目錄舊安裝優(yōu)先或更新了另一來源實(shí)際執(zhí)行哪份安裝、由誰管理按當(dāng)前入口來源更新或處理舊來源PowerShell 與 WSL 結(jié)果不同檢查了兩個(gè)運(yùn)行環(huán)境兩個(gè) Shell 各自選擇哪個(gè)入口在準(zhǔn)備運(yùn)行 Codex 的環(huán)境中繼續(xù)先處理表中最上游的失敗當(dāng)前層未通過不要用版本或登錄結(jié)果替它驗(yàn)收。同一 npm 全局目錄中的.ps1、.cmd和無擴(kuò)展入口可能只是一份安裝的包裝文件不等于多個(gè)版本。用實(shí)際入口判斷 PowerShell 卡在哪一層所有命令都輸入在出現(xiàn)問題的 PowerShell 中。先查當(dāng)前實(shí)際入口Get-Commandcodex它返回當(dāng)前 PowerShell 輸入codex時(shí)實(shí)際會(huì)執(zhí)行的入口Application或ExternalScript記下Source或Path繼續(xù)核對(duì)全部候選。Alias或Function命令名被 Shell 定義搶占先列出全部候選再按本節(jié)末尾的條件分支處理暫不運(yùn)行版本命令。報(bào)找不到命令打開全新的 PowerShell 再試。新窗口仍找不到時(shí)先確認(rèn)原安裝來源和預(yù)期入口入口存在時(shí)只處理它的父目錄或原來源入口也不存在或無法確認(rèn)時(shí)再按原來源恢復(fù)安裝。接著列出同名候選Get-Commandcodex-All|Select-ObjectCommandType,Name,Source第一行應(yīng)與不帶-All的實(shí)際入口一致。其余行是 PowerShell 能發(fā)現(xiàn)的同名候選。候選分布在不同父目錄時(shí)才需要重點(diǎn)懷疑多份安裝或舊 PATH 項(xiàng)同一目錄里的.ps1、.cmd和無擴(kuò)展文件可能只是一份 npm 安裝生成的不同包裝入口。如果第一項(xiàng)是Alias或Function先跳到本節(jié)末尾處理該條件分支其他讀者繼續(xù)下面兩項(xiàng)檢查。再看 Windows 能從當(dāng)前目錄和 PATH 找到哪些外部文件where.exe codex每一行是一個(gè)外部文件候選。沒有輸出且退出碼非 0表示where.exe沒在自己的搜索范圍中找到匹配項(xiàng)。它不是 PowerShell 的完整解析器因此判斷 PowerShell 實(shí)際執(zhí)行誰仍以Get-Command codex為準(zhǔn)。最后查看實(shí)際入口報(bào)告的版本codex--version如果路徑已經(jīng)指向舊目錄這條命令只會(huì)再次顯示舊入口的版本必須把路徑和版本放在一起判斷。僅當(dāng)?shù)谝豁?xiàng)是 Alias 或 Function如果第一項(xiàng)是Alias或Function繼續(xù)運(yùn)行Get-Commandcodex-All|Select-ObjectCommandType,Name,Definition,Options,SourceGet-Commandcodex-All|Where-Object{$_.CommandType-in(Application,ExternalScript)}|Select-ObjectCommandType,Name,SourceAlias 的Definition是別名目標(biāo)Function 的Definition是函數(shù)體二者都不是 Codex 安裝文件。第二條查詢只保留外部文件候選后續(xù)使用這些候選的Source判斷安裝來源。如果沒有外部候選當(dāng)前 PATH 中還沒有可供 PowerShell 直接啟動(dòng)的 Codex 文件。如果確認(rèn)這個(gè) Alias 或 Function 不該繼續(xù)搶占codex可以只在當(dāng)前 PowerShell 中臨時(shí)移除第一項(xiàng)并重新查詢$entryGet-Commandcodexif($entry.Options-matchReadOnly|Constant){$entry|Select-ObjectCommandType,Name,Definition,Optionsthrow當(dāng)前 Alias 或 Function 不能直接移除請(qǐng)先確認(rèn)它來自哪個(gè) Profile 或模塊。}if($entry.CommandType-eqAlias){Remove-Item-LiteralPathAlias:codex}elseif($entry.CommandType-eqFunction){Remove-Item-LiteralPathFunction:codex}Get-Commandcodex這只改變當(dāng)前 PowerShell 會(huì)話新窗口不會(huì)繼承這次移除操作。普通定義會(huì)繼續(xù)執(zhí)行移除如果Options顯示ReadOnly或Constant命令會(huì)先停止。不要盲目追加-Force。先用$PROFILE | Select-Object *列出 Profile 路徑只檢查自己維護(hù)且實(shí)際存在的文件再根據(jù)Definition定位并處理那一項(xiàng)。Profile 中沒有對(duì)應(yīng)定義時(shí)再檢查自己明確加載的模塊全新的 PowerShell 仍出現(xiàn)同一定義時(shí)也按這條持久來源處理。實(shí)際入口變成外部文件之前不要卸載已經(jīng)找到的 Codex 安裝。處理后從Get-Command codex重新完成本節(jié)四項(xiàng)檢查。用實(shí)際案例判斷多個(gè)入口下面是 2026-08-08 Windows PowerShell 脫敏整理案例Get-Command只保留指定字段并重新對(duì)齊路徑?jīng)]有個(gè)人目錄where.exe保留全部?jī)尚邪姹久畋A舭姹拘小ommandType Name Source ExternalScript codex.ps1 C:\npm-global\codex.ps1 Application codex.cmd C:\npm-global\codex.cmd Application codex C:\npm-global\codexC:\npm-global\codex C:\npm-global\codex.cmdcodex-cli 0.147.0Get-Command的字段可以這樣讀CommandType是 PowerShell 識(shí)別到的候選類別。本例把.ps1識(shí)別為ExternalScript把另外兩個(gè)入口識(shí)別為Application。Name是候選文件名。文件名不同不等于安裝了三個(gè) Codex 版本。Source是候選入口路徑。本例三項(xiàng)都在C:\npm-global屬于同一個(gè) npm 全局目錄。不帶-All的Get-Command codex在本例中選擇第一項(xiàng)codex.ps1。where.exe的兩行分別表示它找到了無擴(kuò)展的codex和codex.cmd它沒有列出.ps1這正是不能用where.exe代替 PowerShell 解析結(jié)果的原因。codex-cli 0.147.0是當(dāng)時(shí)實(shí)際優(yōu)先入口報(bào)告的版本。這一行沒有安裝來源或其他 PATH 候選的信息也沒有檢查登錄、配置或請(qǐng)求。0.147.0 只是本文核驗(yàn)日期對(duì)應(yīng)的參考版本不是“永遠(yuǎn)最新版”的承諾。先確認(rèn)運(yùn)行環(huán)境再判斷安裝來源PowerShell 中的結(jié)果只代表 Windows 原生環(huán)境。準(zhǔn)備在 Windows 原生運(yùn)行 Codex 時(shí)再判斷入口來自 npm 還是官方獨(dú)立安裝器準(zhǔn)備在 WSL 中運(yùn)行時(shí)要進(jìn)入 WSL 的 Linux Shell 重新檢查。Windows 原生 PowerShellnpm 全局安裝在當(dāng)前 PowerShell 中運(yùn)行npm prefix-g npm root-g第一條給出 npm 全局前綴第二條給出全局包目錄。實(shí)際codex路徑與npm prefix -g一致并且npm root -g下存在openai/codex時(shí)可以確定這份入口由 npm 管理。本例三個(gè)候選同屬C:\npm-global這個(gè) npm 全局目錄因此同目錄包裝入口不能直接算成三份安裝。當(dāng)前npm找不到或前綴與codex路徑完全無關(guān)時(shí)先確認(rèn)安裝時(shí)是否使用了另一套 Node/npm不要直接卸載現(xiàn)有 Node.js。Windows 官方獨(dú)立安裝器當(dāng)前官方 Windows 安裝器的默認(rèn)可見入口位于%LOCALAPPDATA%\Programs\OpenAI\Codex\bin\codex.exe%LOCALAPPDATA%是當(dāng)前 Windows 用戶的本地應(yīng)用數(shù)據(jù)目錄。安裝器允許改變默認(rèn)位置因此路徑只能作為線索還要確認(rèn)當(dāng)前入口不是 npm 包裝入口且目錄由獨(dú)立安裝器管理。WSL 的 Linux ShellWSL 是 Windows 提供的 Linux 子系統(tǒng)。PowerShell 找到C:\...入口不代表 WSL 會(huì)執(zhí)行同一個(gè)文件WSL 也可能通過互操作看到 Windows PATH 中的入口。準(zhǔn)備在 WSL 中運(yùn)行 Codex 時(shí)應(yīng)進(jìn)入 WSL 的 Bash 或 Zsh再執(zhí)行command-vcodextype-acodex codex--version根據(jù) WSL 中的實(shí)際 Linux 路徑再判斷入口來自 Linux 獨(dú)立安裝器還是該 WSL 自己的 npm。PowerShell 中的結(jié)果不能代替這一步。按相同來源更新不要混用安裝器確認(rèn)來源后再更新。下面是截至 2026-08-08 OpenAI 官方頁面提供的 Windows 獨(dú)立安裝器和 npm 命令請(qǐng)?jiān)谧约旱沫h(huán)境執(zhí)行完成后仍要按下一節(jié)核對(duì)新 PowerShell 中的路徑和版本。本文只核對(duì)了官方命令并運(yùn)行codex update --help沒有實(shí)際執(zhí)行安裝、更新、卸載或 PATH 修改。powershell-ExecutionPolicy ByPass-cirm https://chatgpt.com/codex/install.ps1 | iexnpm 安裝與更新使用npm install-g openai/codex只有 npm 路徑要求 Node.js。任何安裝或更新命令報(bào)錯(cuò)、退出非 0 時(shí)都先停止保留錯(cuò)誤信息和原入口不要臨時(shí)換一種包管理器疊加第二份安裝。當(dāng)前 release 支持自更新時(shí)還可以先查看codex update--helpCodex CLI 0.147.0 提供這個(gè)更新入口并會(huì)根據(jù)檢測(cè)到的 npm 或 Windows 獨(dú)立安裝器來源選擇更新動(dòng)作無法識(shí)別時(shí)會(huì)要求手動(dòng)更新。后續(xù)版本應(yīng)以當(dāng)時(shí)的幫助和官方安裝頁為準(zhǔn)。新 PowerShell 同時(shí)核對(duì)路徑和版本安裝器或包管理器正常結(jié)束后關(guān)閉舊 PowerShell打開新窗口并執(zhí)行Get-Commandcodex|Select-ObjectCommandType,Source codex--version路徑指向預(yù)期安裝來源并且版本符合預(yù)期才算當(dāng)前新終端已經(jīng)切到正確入口。如果舊入口仍優(yōu)先只處理已經(jīng)確認(rèn)來源的對(duì)象Alias 或 Function 按前面的分支處理外部文件則記錄舊路徑和管理器用對(duì)應(yīng)的 npm 或獨(dú)立安裝器流程移除舊安裝或從 PATH 中移除那一個(gè)已確認(rèn)的舊目錄然后再次打開新 PowerShell。不要批量刪除 Node.js、配置目錄或來源不明文件。官方資料確認(rèn)安裝、更新與 WSL 路徑OpenAI Codex CLI 安裝與更新、OpenAIcodex update命令、OpenAI Codex CLI 在 WSL 中的安裝說明、Codex 0.147.0 安裝來源更新動(dòng)作源碼。分別用于核對(duì)當(dāng)前官方入口、更新命令、WSL 環(huán)境邊界和本文固定版本的來源選擇行為。理解 PowerShell 怎樣選擇命令命令優(yōu)先級(jí)、Get-Command參考、Alias Provider、Function Provider、Profile 說明 和where命令參考。用于區(qū)分 PowerShell 實(shí)際入口、Shell 定義和外部文件候選。確認(rèn) npm 管理目錄npm 全局目錄規(guī)則。用于判斷npm prefix -g、npm root -g與實(shí)際入口是否屬于同一安裝來源。參考文檔查看 Muze Wiki 的 Codex 完整安裝方式和跨平臺(tái)說明