当我使用 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
答案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 绑定,请进行修改。