package main import ( "os" ) // 修改工作目录 func cmd_cd(fields []string, stdin *os.File, stdout *os.File, stderr *os.File) { if len(fields) > 2 { // 最多1个参数 panic("cd: too many arguments") } if len(fields) == 1 { // 如果没有指定目录,则切换到home fields = append(fields, os.Getenv("HOME")) } if fields[1] == "~" { // 如果指定目录为~,则切换到home fields[1] = os.Getenv("HOME") } err := os.Chdir(fields[1]) // 切换目录 if err != nil { panic(err) } dir, err := os.Getwd() // 获取工作目录 if err != nil { panic(err) } os.Setenv("PWD", dir) // 更新pwd环境变量 }