Windows 找不到指令:把程式的資料夾加入 PATH,新開的終端機就能執行

摘要

在 Windows 上裝好命令列工具後,終端機卻回報無法辨識指令,多半是工具所在的資料夾不在 PATH 裡,或終端機是在安裝前就開著。只要把那個資料夾加入使用者的 PATH,再重新開啟終端機,輸入指令名稱就能直接執行。

文章目錄

在終端機輸入 java、uv 這類指令時,Windows 會依序到 PATH 環境變數列出的資料夾找同名的程式,找到才會執行。剛裝好的命令列工具卻回報「無法辨識」時,多半是工具所在的資料夾不在 PATH 裡,或是終端機在安裝前就開著,還沒讀到新的 PATH。我們只要把那個資料夾加入使用者的 PATH,再重新開啟終端機,輸入指令名稱就能直接執行。

測試環境是 Windows 11(26H2),終端機分別用 Windows PowerShell 5.1、PowerShell 7.6 與命令提示字元,示範的 mytool 是一個只會印出版本號的小程式。

找不到指令的錯誤訊息

三種終端機的錯誤訊息寫法不同,意思都是在 PATH 的資料夾裡找不到這個名稱的程式:

終端機 錯誤訊息
Windows PowerShell 5.1 無法辨識 'mytool' 詞彙是否為 Cmdlet、函數、指令檔或可執行程式的名稱
PowerShell 7 無法將 'mytool' 字詞辨識為 Cmdlet、函式、指令檔或可執行程式的名稱
命令提示字元 'mytool' 不是內部或外部命令、可執行的程式或批次檔

在 Windows PowerShell 輸入 mytool --version 時,會看到這樣的紅字:

Windows PowerShell 執行 mytool –version,紅字顯示無法辨識 ‘mytool’ 詞彙是否為 Cmdlet、函數、指令檔或可執行程式的名稱

需要修改 PATH 的情況

終端機只會在開啟的那一刻讀取 PATH,之後安裝程式改了 PATH,已經開著的視窗也讀不到。很多安裝程式會自己把資料夾加進 PATH,例如用 WinGet 安裝 OpenJDK 與用官方腳本安裝 uv,所以先關掉終端機,從開始功能表重新開啟,再輸入一次指令,就能分辨是哪一種情況:

重新開啟的終端機 原因 處理方式
可以執行 原本的終端機在安裝前就開著 不用改設定
仍然找不到 工具所在的資料夾不在 PATH 裡 照下面的步驟把資料夾加入 PATH

程式所在的資料夾

要加入 PATH 的是執行檔所在的資料夾,不是執行檔本身。工具的官方安裝說明通常會寫出安裝位置,自己下載的免安裝工具,就是解壓縮後放執行檔的那個資料夾。

同一個工具在另一台電腦上能執行時,可以在那台電腦用 where.exe 指令名稱 查出位置。我的電腦上幾個常用工具的位置如下,%USERPROFILE% 會展開成 C:\Users\使用者名稱:

工具 執行檔所在的資料夾
uv %USERPROFILE%\.local\bin
node、npm,以及用 npm 全域安裝的指令 C:\nvm4w\nodejs(用 nvm-windows 安裝 Node.js 時)
java C:\Program Files\Eclipse Adoptium\jdk-版本-hotspot\bin(Eclipse Temurin)

在 PowerShell 裡,where 是另一個指令的簡寫,一定要寫成 where.exe。

把資料夾加入使用者的 PATH

PATH 分成「使用者變數」與「系統變數」兩份,終端機會把兩份合在一起使用。只有自己會用到的工具加在使用者變數就好,不需要系統管理員權限,也不會影響電腦上的其他帳號。

依序開啟「設定」、「系統」、「系統資訊」,點相關連結的「進階系統設定」,在「系統內容」視窗的「進階」分頁按「環境變數」:

系統內容視窗的進階分頁,右下方有「環境變數」按鈕

在上半部的使用者變數裡選取「Path」,按「編輯」:

環境變數視窗的使用者變數清單選取了 Path,下方有新增、編輯、刪除三個按鈕

按右側的「新增」,在清單最下面的空白列貼上執行檔所在的資料夾,再依序按「編輯環境變數」與「環境變數」兩個視窗的「確定」儲存:

編輯環境變數視窗的清單最下面新增一列 E:\tmp\article-lab\bin,右側有新增、編輯、瀏覽等按鈕

清單裡原本的路徑都不用動。要還原時回到同一個視窗,選取剛才新增的那一列按「刪除」,再按「確定」。

確認新的終端機能執行

儲存前就開著的 Windows PowerShell 裡再執行一次,結果還是無法辨識:

儲存前就開著的 Windows PowerShell 執行 mytool –version,仍然顯示無法辨識 ‘mytool’

從開始功能表重新開啟終端機再執行,就會印出 mytool 1.0.0:

從開始功能表重新開啟的 PowerShell 執行 mytool –version,印出 mytool 1.0.0

總結

Windows 找不到指令時,先從開始功能表重新開啟終端機重試,仍然找不到再把執行檔所在的資料夾加入使用者的 PATH。實測儲存前開著的視窗仍然回報無法辨識,重新開啟的終端機就能執行 mytool。

延伸閱讀

Ted Liou

Ted Liou

現役軟體工程師,分享 Unity 與 AI 的技術開發經驗,也提供諮詢。

留言