如何在Golang中获取当前用户名和目录?


有时我们需要知道哪个用户正在执行当前程序,以及程序位于哪个目录。我们可以借助Go标准库中**os**包里的**user**包获取这些信息。

本文将探讨三种情况:首先,我们将记录正在执行当前进程的**用户名**;然后,我们将记录**用户名**和**用户ID**;最后,我们将记录当前程序所在的**目录**。

获取用户名

要获取**用户名**,我们只需调用**Current()**函数,它将返回当前用户。请参考以下代码。

package main

import (
   "fmt"
   "log"
   "os/user"
)

func main() {
   currentUser, err := user.Current()
   if err != nil {
      log.Fatalf(err.Error())
   }

   username := currentUser.Username

   fmt.Printf("Username is: %s\n", username)
}

输出

如果我们在上述代码上运行命令**go run main.go**,则会在终端中得到以下输出。

Username is: apache

获取用户名和ID

要获取用户名和ID,我们分别对当前用户调用**Name()**和**Uid()**函数。请参考以下代码。

package main

import (
   "fmt"
   "log"
   "os/user"
)

func main() {
   currentUser, err := user.Current()
   if err != nil {
      log.Fatalf(err.Error())
   }

   name := currentUser.Name
   id := currentUser.Uid

   fmt.Printf("name is: %s and id is: %s\n", name, id)
}

输出

如果我们在上述代码上运行命令**go run main.go**,则会在终端中得到以下输出。

name is: Apache and id is: 48

获取当前目录

要获取当前目录,我们只需对当前用户调用**HomeDir()**函数。请参考以下代码。

package main

import (
   "fmt"
   "log"
   "os/user"
)

func main() {
   currentUser, err := user.Current()
   if err != nil {
      log.Fatalf(err.Error())
   }

   dir := currentUser.HomeDir

   fmt.Printf("dir is: %s\n", dir)
}

输出

如果我们在上述代码上运行命令**go run main.go**,则会在终端中得到以下输出。

dir is: /usr/share/httpd

更新于:2021年11月1日

6K+ 阅读量

启动你的职业生涯

通过完成课程获得认证

开始学习
广告