ターミナルの「エコー」
(2018/3/21)
パソコンが普及する以前は、外部の共用コンピュータにケーブルで文字端末を接続して使うことが多かった
文字端末は単純なもので、キーボードで打った文字を送る機能と、送られてきた文字を表示する機能しか持っていなかった
ユーザが文字端末で
date
などと入力すると d
, a
, t
, e
という文字が順番に接続先のコンピュータに送られ、コンピュータはこの文字列を解釈して日付を計算し、結果の文字列が送り返されてきて文字端末に表示される、といった具合のインタラクションだった こういうのが「コマンドラインインタフェース」とか「CLI」とか呼ばれるもので、いまだにUnixなどで現役である
たとえば手元のパソコンからWebサーバに接続して設定を変えるといった場合、接続方法は異なるものの、こういう昔のような方法が現在でもかなり使われている
さて、ユーザが「
date
」などとコマンドを入力したとき、入力した文字はすぐに端末に表示されてほしいはずである そうでないと自分が何を入力したかわからなくて困る
一方、パスワード入力の場合などのように、表示されてほしくない場合もある
表示したりしなかったりというのは接続されるコンピュータ側のアプリが決定するべきと思われるが、なんと昔のコンピュータはアプリと関係なく「入力した文字をオウム返しする」という仕様が標準になっていた
つまり、コンピュータが文字をきちんと受け取ったかどうかは関係なく、ユーザが打ったキーの文字がそのまま端末に表示されるのが標準であった
こういうのが「エコー」という動作である
ではパスワードを入力したい時はどうするかというと、こういう標準のエコー動作を無効にしなければならない
エコーが無効にせずにパスワードを入力したりするとパスワードがそのまま表示されてしまったりする
パスワード以外でもエコー動作が要らないことはよくあるわけで、「標準でエコーする」という昔の謎仕様が現在も生き残っているおかげでいまだにいろんな迷惑な話がある
たとえば
vi
のようなエディタを使うとき入力文字がエコーされたら困る Unixを再設計するみたいな話があればこういう謎仕様は一掃されるかもしれないが、全くそういう期待はできないので、プログラマは未来永劫エコーだの無効だのに悩み続けなければならないのであったorz
no pun intended
ちなみにウィンドウなどを使うGUIではこいうことはなくて、ユーザへのフィードバックはすべてアプリが自力でやっている