Wie erhalte ich das Verzeichnis der aktuellen ausführbaren Datei in Go?
Hallo zusammen! Ich bin ein Anfänger in der Go-Entwicklung und bin auf ein Problem gestoßen: Ich muss das Verzeichnis ermitteln, in dem sich die aktuelle ausführbare Datei meines Programms befindet. Ich schreibe eine kleine CLI-Anwendung, die eine Konfigurationsdatei liest, die sich im selben Ordner wie die Binärdatei befindet. Aber wenn ich das Programm aus einem anderen Verzeichnis starte (z.B. über `go run` aus dem Projektstamm oder aus dem systemweiten PATH), funktionieren relative Pfade nicht mehr.
Hier ist, was ich ausprobiert habe:
```go
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
// Versuch 1: Einfach os.Getwd() — gibt das Arbeitsverzeichnis zurück, nicht den Ordner der Datei
wd, _ := os.Getwd()
fmt.Println("Working dir:", wd)
// Versuch 2: os.Args[0] — zeigt den Pfad, mit dem das Programm aufgerufen wurde
fmt.Println("Args[0]:", os.Args[0])
// Versuch 3: filepath.Abs(os.Args[0]) — immer noch Probleme mit symbolischen Links
abs, _ := filepath.Abs(os.Args[0])
fmt.Println("Abs:", abs)
}
```
Das Problem ist, dass `os.Args[0]` einfach nur