-bash:!/ usr / bin / env:未find事件

我得到这个奇怪的错误消息试图写一个python脚本shebang:

$ echo "#!/usr/bin/env python" > scripts/sandbox.py -bash: !/usr/bin/env: event not found $ echo "say what?" > scripts/sandbox.py 

立即,做同样的事情,但不使用shebang线工程。 这种行为是什么?如何克服? 谢谢

! 是一个特殊的字符,它被用来指以前的命令。 它在双引号内扩展。 为了避免这种情况,请用单引号括起来:

 echo '#!/usr/bin/env python' > scripts/sandbox.py 

@ mklement0在评论中精美地澄清了它:

更具体地说, ! 对于Bash的历史扩展功能来说是特殊的,默认情况下(仅)在交互式shell中。 除了用单引号字符串来避开它外,还可以用set +H来关闭它