実行ユーザのホームディレクトリを取得する方法は、以下の通りでしょうか?それとも、何か特別な機能があるのでしょうか?
os.Getenv("HOME")
もし上記が正しいのであれば、この方法がLinux以外のプラットフォーム、例えばWindowsで動作することが保証されているかどうか、どなたかご存知でしょうか?
go 1.0.3 (おそらくそれ以前も) では、以下のように動作します。
package main
import (
"os/user"
"fmt"
"log"
)
func main() {
usr, err := user.Current()
if err != nil {
log.Fatal( err )
}
fmt.Println( usr.HomeDir )
}
クロスコンパイルが重要な場合は、homedir
ライブラリを検討してください。
例えば、こんな感じです。
package main
import (
"fmt"
"os"
"runtime"
)
func UserHomeDir() string {
if runtime.GOOS == "windows" {
home := os.Getenv("HOMEDRIVE") + os.Getenv("HOMEPATH")
if home == "" {
home = os.Getenv("USERPROFILE")
}
return home
}
return os.Getenv("HOME")
}
func main() {
dir := UserHomeDir()
fmt.Println(dir)
}
Windows では、環境変数 USERPROFILE
または HOMEPATH
を使用する必要があります。Recognized Environment Variables](http://technet.microsoft.com/en-us/library/cc749104%28WS.10%29.aspx) を参照してください (もっと適切なドキュメントへのリンクがあるとありがたいです)。