Search code examples
gohome-directory

Obtain user's home directory


Is the following the best way of obtaining the running user's home directory? Or is there a specific function that I've ovelooked?

os.Getenv("HOME")

If the above is correct, does anyone happen to know whether this approach is guaranteed to work on non-Linux platforms, e.g. Windows?


Solution

  • Since go 1.12 the recommended way is:

    package main
    import (
        "os"
        "fmt"
        "log"
    )
    func main() {
        dirname, err := os.UserHomeDir()
        if err != nil {
            log.Fatal( err )
        }
        fmt.Println( dirname )
    }
    

    Old recommendation:

    In go 1.0.3 ( probably earlier, too ) the following works:

    package main
    import (
        "os/user"
        "fmt"
        "log"
    )
    func main() {
        usr, err := user.Current()
        if err != nil {
            log.Fatal( err )
        }
        fmt.Println( usr.HomeDir )
    }