2015年10月29日
dash使用時におけるCTRL-hで一文字削除をおこなう設定方法のまとめ
dash(Debian Almquist shell)は、POSIXを満たした軽量なシェルである。
実行が高速であり、かつ依存ライブラリも少ないため、root用のシェル等に用いられることが多い。
しかし、dashのインタラクティブシェル上では、標準ではCTRL-hによる一文字削除がおこなえず、コマンド入力が不便である。
そのため、dashシェル上でCTRL-hによる一文字削除を可能にする方法を調べ、まとめた。
Arch Linux (x86_64, 4.2.4-1-ARCH)
dash (0.5.8-1)
stty (GNU coreutils, 8.24)
設定手順
設定は、以下の手順でおこなう。
一時的な設定
永続的な設定
一時的な設定
CTRL-hで一文字削除を可能にするためには、sttyコマンドを用いて、端末の特殊文字の設定を変更すれば良い。
具体的には、シェル上で以下のコマンドを入力する。
$ stty erase '^H'
永続的な設定
シェルのプロンプト上でsttyを実行した場合、設定はシェルを終了するまでしか継続しない。
永続的な設定をおこないたい場合は、上記の内容を$HOME/.profileに書き込めば良い。
$ echo stty erase '^H' >> $HOME/.profile
参考にしたもの
『UNIXプログラミング環境』、Brian W.Kernighan・Rob Pike・石田晴久(監訳)、アスキー出版局
man stty
雑感
このsttyによる"erase"の設定は、他のシェル(mksh、bash等)でも可能。
→ ただ、zshだけは、何故かsttyによる設定が反映されなかった。zsh側の設定の問題?『UNIXプログラミング環境』によれば、古代のUNIX(Version 7 Unix等)では、1文字削除は'#'、1行削除は'@'だったらしい。
→ コメント開始文字としての'#'は、バックスラッシュクオートで入力していたそう。