Project Fx 2.0

怪文書と備忘録を書きます

Ubuntuのターミナルでタブ補完・上矢印キーが効かなかったのを直した話

先日の記事でConoHa VPSを使い始めたことを書きましたが、そのVPSに入れたUbuntu Server 18.04 LTSのシェルに関してちょっと躓いたことがあったので、自分用ログとしてここにまとめておきます。
ローカルからsshしてシェル(/bin/sh)を叩いていたんですが、使用開始直後から以下のような問題に悩まされていました。

  • Tabキーを押しても入力が補完されず、普通のエディタのように空白が挿入される
  • 上矢印キーを押しても入力履歴が表示されず、^[[Aなる謎の文字列が挿入される
  • echo $SHELLしてもちゃんと/bin/shと表示される
  • set -o viしてもダメ

同様の症状の人がいないか検索し、以下の記事を発見。

Ubuntu日本語フォーラム / SSHで接続するとキーボードの挙動が変になる

この記事で「シェルが/bin/dashになっている」「Ubuntu/bin/sh/bin/dashシンボリックリンクにしている」という答えをゲット。マジかよ。余計なことしてくれるなUbuntu。余計なお世話じゃマジで。
ともかくここで提案されていた通り、シンボリックリンクを貼り直してみたりchshしてみたりしたものの、症状は改善せず。

最終的に、さらにググって見つけた以下のサイトで紹介されているように

dpkg-reconfigure bash

として、debパッケージの設定を初期化したことで問題が解決し、ちゃんと/bin/bashが動くようになりました。良かった。 masaoo.blogspot.com


Ubuntuの「bashとdash」問題(命名:筆者)については、特に以下のサイト群に詳しいです。「とりあえずShebang#!/bin/shとしておく」というのは避けた方が良さそうだと言うことを学びました。

https://siguniang.wordpress.com/2013/05/12/dash-is-not-bash/

rcmdnk.com

こういう類のトラブルに見舞われた経験が今までなかったので、だいぶ困惑させられました。Ubuntuを敬遠しているLinux歴の長い人を複数見たことがありますが、その理由が何となく垣間見えた気がします。

2020/03/16 : 改めて読み返したら文章のノリが所々気持ち悪かったので一部修正