为什么我不能在 Freebsd 中执行“echo '#!/bin/sh”?

为什么我不能在 Freebsd 中执行“echo '#!/bin/sh”?

为什么我在 Freebsd 中不能这样做echo '#!/bin/sh?它只会生成:

/bin/sh:未找到事件

我尝试了所有引号组合,但都无济于事。我手头只有 Freebsd 8.4。

答案1

尽管错误消息指向了/bin/sh,但问题在于您的 shell 使用!将历史记录插入到命令行中,而引号无法逃脱 的魔力!。因此,您需要使用 明确地对 进行!转义\

例如:

echo #\!/bin/sh

答案2

您可以在执行该命令时暂时关闭历史记录扩展:

$ echo !foo
bash: !foo: event not found
$ set +H; echo !foo; set -H
!foo

相关内容