summaryrefslogtreecommitdiff
path: root/src/cmd/go/env.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/go/env.go')
-rw-r--r--src/cmd/go/env.go34
1 files changed, 22 insertions, 12 deletions
diff --git a/src/cmd/go/env.go b/src/cmd/go/env.go
index 2db821797..26d37df4f 100644
--- a/src/cmd/go/env.go
+++ b/src/cmd/go/env.go
@@ -85,18 +85,28 @@ func runEnv(cmd *Command, args []string) {
return
}
- switch runtime.GOOS {
- default:
- for _, e := range env {
- fmt.Printf("%s=\"%s\"\n", e.name, e.value)
- }
- case "plan9":
- for _, e := range env {
- fmt.Printf("%s='%s'\n", e.name, strings.Replace(e.value, "'", "''", -1))
- }
- case "windows":
- for _, e := range env {
- fmt.Printf("set %s=%s\n", e.name, e.value)
+ for _, e := range env {
+ if e.name != "TERM" {
+ switch runtime.GOOS {
+ default:
+ fmt.Printf("%s=\"%s\"\n", e.name, e.value)
+ case "plan9":
+ if strings.IndexByte(e.value, '\x00') < 0 {
+ fmt.Printf("%s='%s'\n", e.name, strings.Replace(e.value, "'", "''", -1))
+ } else {
+ v := strings.Split(e.value, "\x00")
+ fmt.Printf("%s=(", e.name)
+ for x, s := range v {
+ if x > 0 {
+ fmt.Printf(" ")
+ }
+ fmt.Printf("%s", s)
+ }
+ fmt.Printf(")\n")
+ }
+ case "windows":
+ fmt.Printf("set %s=%s\n", e.name, e.value)
+ }
}
}
}