diff --git a/src/cmd/dist/build.c b/src/cmd/dist/build.c
index 54510db1daaaca5c5883c1e3e22727207e18dd87..d5cf17dcd31f50651397124a2553157f4b5f56c1 100644
--- a/src/cmd/dist/build.c
+++ b/src/cmd/dist/build.c
@@ -179,7 +179,12 @@ findgoversion(void)
 	if(isfile(bstr(&path))) {
 		readfile(&b, bstr(&path));
 		chomp(&b);
-		goto done;
+		// Commands such as "dist version > VERSION" will cause
+		// the shell to create an empty VERSION file and set dist's
+		// stdout to its fd. dist in turn looks at VERSION and uses
+		// its content if available, which is empty at this point.
+		if(b.len > 0)
+			goto done;
 	}
 
 	// The $GOROOT/VERSION.cache file is a cache to avoid invoking
@@ -1370,5 +1375,5 @@ cmdversion(int argc, char **argv)
 	if(argc > 0)
 		usage();
 
-	xprintf("%s\n", findgoversion());
+	xprintf("%s\n", goversion);
 }