![为什么我不能在 Freebsd 中执行“echo '#!/bin/sh”?](https://linux22.com/image/1511622/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E4%B8%8D%E8%83%BD%E5%9C%A8%20Freebsd%20%E4%B8%AD%E6%89%A7%E8%A1%8C%E2%80%9Cecho%20'%23!%2Fbin%2Fsh%E2%80%9D%EF%BC%9F.png)
为什么我在 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