先日の記事で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/
こういう類のトラブルに見舞われた経験が今までなかったので、だいぶ困惑させられました。Ubuntuを敬遠しているLinux歴の長い人を複数見たことがありますが、その理由が何となく垣間見えた気がします。
2020/03/16 : 改めて読み返したら文章のノリが所々気持ち悪かったので一部修正