
sh シェルを使用するとき、次のスクリプトをどのように実行しますか?
#!/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
sh コマンドではなく bash コマンドです。 Bashを使用しないと、このbind
コマンドは機能しません。
プラットフォームに応じて、sh
これはいくつかのシェルのうちの1つです。彼らは皆共通コアスクリプトのために。sh
特にPlainには便利なインタラクティブ機能はほとんどありませんsh
。
一部のシステムでは、sh
bash(呼び出し時に互換モードで実行sh
)はコマンドライン編集にreadlineライブラリを使用し、キーバインディングをデフォルトでサポートしていますbind
。他のシステムは、スクリプトをより速く実行するダッシュやkshなどのより効率的なシェルを使用します。まともなコマンドラインインターフェイスが必要な場合sh
。
作成したスクリプトは実行時には効果がありません(bind
非対話型シェルでコマンドが意味がないという警告を出力することを除く)。キーバインディング定義のみを含むファイルは便利なスタンドアロン実行ファイルにすることはできません。だからトップシェバンは役に立たない。
答え2
bind
使用できませんsh
。~/.inputrc
readlineバインディングを変更するには修正してください。