2 回答

TA貢獻1802條經驗 獲得超5個贊
從手冊頁which
:
這需要一個或多個參數。對于它的每個參數,它將在 shell 提示符下輸入該參數時將執行的可執行文件的完整路徑打印到標準輸出。它通過使用與 bash(1) 相同的算法在環境變量 PATH 中列出的目錄中搜索可執行文件或腳本來執行此操作。
Go 的os/exec.LookPath
功能非常接近這個功能:
LookPath 在 PATH 環境變量命名的目錄中搜索名為文件的可執行文件。如果文件包含斜線,則直接嘗試,不查詢 PATH。結果可能是絕對路徑或相對于當前目錄的路徑。
path/filepath.Abs
如果您需要有保證的絕對路徑,請使用。

TA貢獻1828條經驗 獲得超6個贊
我不希望這是最好的答案,但這是我剛剛找到的答案。我希望有更多特定于 go 的類型,但與此同時, linux 中的類型是 bash 和 sh(alpine)中可用的默認內置類型。
type type
您可以通過運行which yields來自己測試:
type 是一個內置的 shell
中的用法go
如下所示:
b, err := exec.Command("type", "go").Output()
if err != nil {
? ? /* 'type' is not available on the O/S */
}
goPath := strings.TrimPrefix(strings.TrimSuffix(string(b), "\n"), "go is ")
需要這些函數的原因Trim
是因為輸出看起來像這樣:
go 是 /usr/local/go/bin/go\n
這不是最好的方法,但它確實有效。
- 2 回答
- 0 關注
- 165 瀏覽
添加回答
舉報