一尘不染

查找可执行文件的路径

go

我使用Go在各种平台上编译了一个程序,并通过调用相对路径或仅通过其名称(如果它在PATH变量中)来运行它。

是否可以找出可执行文件在哪里?

说,我的程序称为“
foo.exe)”。我可以运行./foofoo(如果它在PATH中)../../subdir/subdir/foo

我尝试使用os.Args[0],我想我应该检查程序名称是否包含除“
foo”以外的其他内容。如果是,请使用filepath.Abs,如果否,请使用(我找不到函数名,有一个通过PATH查找以检查程序在哪里的函数)。


阅读 227

收藏
2020-07-02

共1个答案

一尘不染

使用软件包osext

它提供的功能Executable()可返回当前程序可执行文件的绝对路径。它在系统之间可移植。

在线文件

package main

import (
    "github.com/kardianos/osext"
    "fmt"
)

func main() {
    filename, _ := osext.Executable()
    fmt.Println(filename)
}
2020-07-02