如何使“bind”命令在 sh shell 中工作

如何使“bind”命令在 sh shell 中工作

当我使用 sh shell 时,如何运行下一个脚本:

#!/bin/bash

bind '^[[3'=prefix-2
bind '^[[3~'=delete-char-forward
bind '^[[1'=prefix-2
bind '^[[1~'=beginning-of-line
bind '^[[4'=prefix-2
bind '^[[4~'=end-of-line

绑定在 sh

答案1

bind是 bash 命令,而不是 sh 命令。如果您不使用 bash,该bind命令将不可用。

根据平台的不同,sh可能是多个 shell 之一。他们都提供了一个共同核心用于脚本编写。 Plainsh几乎没有任何方便的交互功能;特别是,plainsh没有键绑定的概念。

在某些系统上,sh是 bash (当调用时以兼容模式运行sh)并使用 readline 库进行命令行编辑并通过内置支持键绑定bind。其他系统使用更精简的 shell,例如 dash 或 ksh,它们执行脚本的速度更快。如果您想要一个像样的命令行界面,请不要调用sh.

请注意,您编写的脚本在运行时没有任何效果(除了打印警告,表明该bind命令在非交互式 shell 中毫无意义)。仅包含键绑定定义的文件不能是有用的独立可执行文件,而只能是 shell 片段。所以顶部的 shebang 没有用。

答案2

bind不可用sh~/.inputrc如果要更改 readline 绑定,请进行修改。

相关内容