hush: fix shift + $0 bug; add testcase
diff --git a/shell/hush.c b/shell/hush.c
index 0d260a7..107b821 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -952,7 +952,7 @@
 		n = atoi(argv[1]);
 	}
 	if (n >= 0 && n < global_argc) {
-		/* XXX This probably breaks $0 */
+		global_argv[n] = global_argv[0];
 		global_argc -= n;
 		global_argv += n;
 		return EXIT_SUCCESS;