bind
é um comando bash, não um comando sh. Se você não estiver usando o bash, o comando bind
não estará disponível.
Dependendo da plataforma, sh
pode ser um dos vários shells. Todos eles fornecem um núcleo comum para criação de scripts. O sh
simples dificilmente possui recursos convenientes para uso interativo; em particular, o% normal sh
não tem noção de associações de teclas.
Em alguns sistemas, sh
é bash (que é executado em um modo de compatibilidade quando chamado como sh
) e usa a biblioteca readline para edição de linha de comando e suporta as associações de teclas através do bind
builtin. Outros sistemas usam shells mais enxutos, como dash ou ksh, que são mais rápidos para executar scripts. Se você quiser uma interface de linha de comando decente, não chame sh
.
Observe que o script que você escreveu não tem efeito quando executado (exceto para imprimir avisos de que o comando bind
é inútil em um shell não interativo). Um arquivo contendo apenas definições de ligação de chave não pode ser um executável autônomo útil, apenas um fragmento de shell. Então o shebang no topo não é útil.