私はsqlite3
パッケージがUbuntuにインストールされており、readlineはサポートされていません。つまり、コマンド履歴はなく、readlineが提供する他の気の利いた機能があります。
これは構成の問題ですか、それともパッケージの問題ですか?箱から出してreadlineサポートを提供する別のパッケージアーカイブがどこかにありますか?または、sqlite3を自分でコンパイルして、readlineがサポートされていることを確認するにはどうすればよいですか?
いつでもrlwrapを使用できます。
rlwrap sqlite3 database.db
参考までに、hardy heronのインストールを確認したところ、そのsqlite3はreadlineをサポートしています。
これはグーグルでの「ubuntu sqlite3 readline」の最初のヒットなので、別の答えを追加します。
Android SDKは、独自のバージョンのsqlite3
バイナリをインストールします。このバイナリはreadline
サポートを提供しません。パスにAndroid SDKを追加した場合、readline
のサポートがないと思われるかもしれません。実際、すべてのUbuntuパッケージはreadline
のサポートでコンパイルされています。
同じ状況を説明している buntuバグレポート も参照してください。
まだインストールされていない場合は、libreadlineとlibncursesをインストールします。 Ubuntu Linuxでは、以下のコマンドを実行してインストールします。
Sudo apt install libreadline-dev libncurses-dev
以下のコマンドを実行してビルドします。
gcc -DSQLITE_ENABLE_FTS5 -DHAVE_READLINE Shell.c sqlite3.c -lpthread -ldl -lm -lreadline -lncurses -o sqlite3
注:readline機能を取得するには、-DHAVE_READLINEと-lreadlineおよび-lncursesが必要です。
Sqlite3バイナリを/ usr/binにコピーするか、パスに追加します。
私はこれで自分のバイナリをコンパイルすることができました:
SQLiteダウンロードページ から「autoconf」ソースファイルをダウンロードします。 tarを解凍して解凍し、ソースディレクトリに移動します。
ソースコードを次のようにコンパイルします。
./configure --enable-readline
make
私はRedHatで実行しているので、事前にyum install readline-devel
を実行する必要がありました。これは、マシンによって異なる場合があります。