【问题标题】:-bash: !/usr/bin/env: event not found [duplicate]-bash:!/usr/bin/env:找不到事件[重复]
【发布时间】:2017-03-14 23:57:26
【问题描述】:

我在尝试将 shebang 写入 python 脚本时收到一条奇怪的错误消息:

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

$ echo "say what?" > scripts/sandbox.py

立即做同样的事情,但不使用 shebang line 作品。这是什么行为,如何克服?

【问题讨论】:

    标签: python linux bash macos echo


    【解决方案1】:

    ! 是 bash 的特殊字符,用于引用之前的命令。它在双引号内展开。 为避免这种情况,请将它们用单引号括起来:

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

    @mklement0 在评论中很好地澄清了这一点:

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

    【讨论】:

    • 更具体地说,! 是 Bash 的 历史扩展 功能的特殊之处,默认情况下(仅)在交互式 shell 中启用。除了通过使用单引号字符串来避免它之外,还可以使用set +H 将其完全关闭。
    猜你喜欢
    • 2014-03-03
    • 2013-04-04
    • 2019-09-08
    • 2021-05-07
    • 2016-04-24
    • 2019-04-05
    • 2018-02-17
    • 1970-01-01
    相关资源
    最近更新 更多