为什么在这种情况下输出redirect不起作用?

操作系统是ubuntu12.04 。 我写了一个python程序main.py ,并且想要运行它。 所以我创build了一个名为run.sh shell脚本。

 #!/bin/bash python main.py & >/dev/null 2>&1 

并执行这个命令chmod u+x run.sh

但是,当我在./run.sh ,python程序的输出仍然在terminal中。
但是这可以工作: ./run.sh >/dev/null 2>&1 。 但这种方式违背了我的初衷,因为它太复杂了。

我想知道为什么会这样。 我怎么能达到我的意图?

如果你想在后台运行脚本,试试这个:

 python main.py >/dev/null 2>&1 & 

&>/dev/null之间有一个空格,所以Python进程在后台运行,不需要应用输出重定向。 如果你删除&将不会有输出。 这也足以去除空间,因为&>是有效的bash,但你可能不是这个意思。