我使用Go在各种平台上编译了一个程序,并通过调用相对路径或仅通过其名称(如果它在PATH变量中)来运行它。
是否可以找出可执行文件在哪里?
说,我的程序称为“ foo(.exe)”。我可以运行./foo,foo(如果它在PATH中)../../subdir/subdir/foo。
foo
.exe
./foo
../../subdir/subdir/foo
我尝试使用os.Args[0],我想我应该检查程序名称是否包含除“ foo”以外的其他内容。如果是,请使用filepath.Abs,如果否,请使用(我找不到函数名,有一个通过PATH查找以检查程序在哪里的函数)。
os.Args[0]
filepath.Abs
使用软件包osext。
它提供的功能Executable()可返回当前程序可执行文件的绝对路径。它在系统之间可移植。
Executable()
在线文件
package main import ( "github.com/kardianos/osext" "fmt" ) func main() { filename, _ := osext.Executable() fmt.Println(filename) }