os.Getenv("HOME")
이 문제가 발생할 경우, 위의 수정하십시오 누구 것인지 알 수 있는 장점이 있다 (예: linux 플랫폼에 외곽진입 작동합니까 indows?
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' 라이브러리란] 1
Go1.12+ os 에서 사용할 수 있습니다. 우저호메디르 ()
home, err := os.UserHomeDir()
없어도 있는 가오 활성화됨 (즉, '처음부터') 와 함께 노력해야 할 필요 없이 구문 분석 / etc / passwd '또는' 등의 헛소리마라!
예를 들어,
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)
}
go / / 데포트고파스 구축하십시오 go1.8rc2 는 어떤 함수를 얻을 수 있는 홈 디렉터리입니다. https://github.com/golang/go/blob/go1.8rc2/src/go/build/build.go # L260-L277
다음의 코드는 추출됩니다 데포트고파스 함수은.
package main
import (
"fmt"
"os"
"runtime"
)
func UserHomeDir() string {
env := "HOME"
if runtime.GOOS == "windows" {
env = "USERPROFILE"
} else if runtime.GOOS == "plan9" {
env = "home"
}
return os.Getenv(env)
}
func main() {
dir := UserHomeDir()
fmt.Println(dir)
}
하지만 '패스' 는 비슷한 답변을 @peterSO XDG_CONFIG_HOME linux*용.
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
} else if runtime.GOOS == "linux" {
home := os.Getenv("XDG_CONFIG_HOME")
if home != "" {
return home
}
}
return os.Getenv("HOME")
}
func main() {
fmt.Println(userHomeDir())
}
환경 변수 '우저프로피레 콩지름에 호메파스' '또는' Windows 에서. [인정할 수 있는 환경 변수를] (http://technet.microsoft.com/en-us/library/cc749104%28WS.10%29.aspx) 볼 (보다 때마침 문서 링크를 약간만이라도 일이다).