Index: Lib/subprocess.py =================================================================== --- Lib/subprocess.py (revision 81951) +++ Lib/subprocess.py (working copy) @@ -577,7 +577,7 @@ if result: result.append(' ') - needquote = (" " in arg) or ("\t" in arg) or ("|" in arg) or not arg + needquote = (" " in arg) or ("\t" in arg) or ("|" in arg) or ("&" in arg) or not arg if needquote: result.append('"') Index: Lib/test/test_subprocess.py =================================================================== --- Lib/test/test_subprocess.py (revision 81951) +++ Lib/test/test_subprocess.py (working copy) @@ -488,6 +488,8 @@ 'ab ""') self.assertEqual(subprocess.list2cmdline(['echo', 'foo|bar']), 'echo "foo|bar"') + self.assertEqual(subprocess.list2cmdline(['echo', 'foo&bar']), + 'echo "foo&bar"') def test_poll(self):