面试题答案
一键面试package main
import (
"fmt"
"os"
"os/exec"
)
func main() {
// 获取当前的PATH环境变量
path := os.Getenv("PATH")
// 要添加的新路径
newPath := "/new/path"
// 拼接新的PATH环境变量
newFullPath := newPath + string(os.PathListSeparator) + path
// 设置新的PATH环境变量
err := os.Setenv("PATH", newFullPath)
if err != nil {
fmt.Println("设置PATH环境变量出错:", err)
return
}
// 使用exec.Command执行外部命令ls
cmd := exec.Command("ls")
// 设置命令执行时使用的环境变量
cmd.Env = os.Environ()
output, err := cmd.CombinedOutput()
if err != nil {
fmt.Println("执行命令出错:", err)
return
}
fmt.Println(string(output))
}
代码解释:
- 获取当前PATH环境变量:
os.Getenv("PATH")
获取当前系统的PATH
环境变量值。 - 定义新路径:
newPath := "/new/path"
定义要添加到PATH
中的新路径。 - 拼接新的PATH环境变量:
newFullPath := newPath + string(os.PathListSeparator) + path
使用操作系统特定的路径分隔符(os.PathListSeparator
,在Linux和macOS上是:
,在Windows上是;
)将新路径和原PATH
拼接起来。 - 设置新的PATH环境变量:
os.Setenv("PATH", newFullPath)
将拼接后的新PATH
设置为当前进程的PATH
环境变量。 - 执行外部命令:
exec.Command("ls")
创建一个执行ls
命令的Cmd
对象。cmd.Env = os.Environ()
设置命令执行时使用的环境变量为当前进程的环境变量,这样才能使用修改后的PATH
。output, err := cmd.CombinedOutput()
执行命令并获取标准输出和标准错误输出,若执行出错,err
不为nil
。最后输出命令执行结果。