which 命令構建器
產生用於在 PATH 中尋找可執行檔的 which 指令
開始使用 which
## 什麼是什麼?
`which` 會接收一個指令名稱,並回傳您的 shell 實際會執行的可執行檔的完整路徑。它會依序檢查`$PATH`,因此當安裝了多個相同名稱的指令時,它能告訴您哪個版本會被使用。這是診斷「指令未找到」問題、別名/遮蔽問題以及 PATH 設定錯誤時的首選工具。
## 使用方式
1. **設定選項**:切換至`-a`(全部匹配)或`-s`(靜默/退出碼模式)。 2. **輸入名稱**:輸入您要查詢的可執行檔名稱。 3. **複製並執行**:將生成的指令貼上到您的終端機中。
如果找到該指令,其退出狀態為`0`,否則為非零值,因此`which`很適用於 shell 指令稿中。
常見選項
### 名稱(位置式) 需解析的可執行檔名稱,例如 `python`、`docker`、`node`。`which` 會顯示在 `$PATH` 中的第一個匹配結果。
### `-a` 所有匹配項目 列出 `$PATH` 中的所有匹配可執行檔,而非僅第一個。可用於偵測重複安裝或被遮蔽的安裝(例如在不同目錄中的兩個 `python` 二進位檔)。
### `-s` 安靜模式 不輸出任何內容——僅依賴退出狀態(0 表示找到,非零則表示未找到)。非常適用於指令碼中的條件判斷:`if which docker -s; then ...`。
▶which、whereis 和 locate 之間有什麼差異?
`which`會在`$PATH`中搜尋殼層實際要執行的可執行檔。`whereis`則會在標準目錄中搜尋二進位檔、原始碼以及說明文件。`locate`則是根據檔名,在預先建立的資料庫中搜尋所有檔案。
▶我要如何找出所有已安裝的某個指令版本?
使用`-a`:`which -a python`會列出`$PATH`中的所有`python`可執行檔,如此你就能知道哪一個會勝出,以及哪些會被遮蔽。
▶為何`which`找不到我可以執行的指令?
該指令很可能是 shell 函數、別名或內建功能,而非可執行檔案。`which`僅會搜尋`$PATH`。若要在 bash 中同時查看函數與別名,請使用`type command`。
如果这个工具对你有帮助,请考虑请我喝杯咖啡。
請幫我買杯咖啡吧。