path - parse - uninstall go
Encuentra la ruta al ejecutable (3)
Compilo un programa con Go para varias plataformas y lo ejecuto llamando a una ruta relativa o simplemente por su nombre (si está en la variable PATH).
¿Es posible averiguar dónde está el ejecutable?
Diga, mi programa se llama " foo
( .exe
)". Puedo ejecutar ./foo
, foo
(si está en la RUTA), ../../subdir/subdir/foo
.
He intentado usar os.Args[0]
y creo que debería verificar si el nombre del programa contiene algo diferente además de "foo". En caso afirmativo, utilice filepath.Abs
, si no, use (no puedo encontrar el nombre de la función, hay una función que mira a través de PATH para verificar dónde está el programa).
Esto no es específico para ir (a menos que la "biblioteca estándar" go contiene alguna función para hacerlo), y no hay una solución portátil. Para soluciones en algunas plataformas comunes, consulte, por ejemplo, ¿Cómo encuentro la ubicación del ejecutable en C? o Encontrar la ruta del ejecutable actual sin / proc / self / exe .
Puede usar os.Executable
para obtener una ruta ejecutable en la versión Go 1.8 o superior.
import (
"os"
"path"
"log"
)
func main() {
ex, err := os.Executable()
if err != nil { log.Fatal(err) }
dir := path.Dir(ex)
log.Print(dir)
}
Usa el paquete osext .
Proporciona la función Executable()
que devuelve una ruta absoluta al ejecutable del programa actual. Es portátil entre sistemas.
package main
import (
"github.com/kardianos/osext"
"fmt"
)
func main() {
filename, _ := osext.Executable()
fmt.Println(filename)
}