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)

設定手順

設定は、以下の手順でおこなう。

  1. 一時的な設定

  2. 永続的な設定

一時的な設定

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行削除は'@'だったらしい。
    → コメント開始文字としての'#'は、バックスラッシュクオートで入力していたそう。

Tags: Shell *nix
このエントリーをはてなブックマークに追加