aptコマンドを使用したときの入力補完機能の動作
Linux Mintを使用している時に特定のコマンドで入力補完機能が動かないことがあるので調べてみました。
入力補完機能の確認
入力補完機能のパッケージbash-completion
がインストールされていることを確認します。
$ apt list | grep -i bash-comp bash-completion/bionic,bionic,now 1:2.8-1ubuntu1 all [インストール済み]
入力補完機能の動作を確認します。
$ sudo apt install ./[TAB][TAB] [TAB][TAB]を押しても、aptコマンドではファイル名が補完されません。
ls
コマンドでは入力補完機能の動作は問題ありませんが、apt
コマンドだと入力補完機能が正しく動作しません。
Linux Mintのaptコマンド
Linux Mintのapt
コマンドは、/usr/bin/apt
のラッパーとして動作しているようです。
apt
コマンドのパスを確認します。
$ which apt /usr/local/bin/apt Debian/Ubuntuのaptコマンドのパスは/usr/bin/aptになります。
apt
コマンドの内容を確認するとpythonスクリプトであることが確認できます。
$ more `which apt` #!/usr/bin/python3 import sys import os import subprocess import shlex def usage(): (省略)
スクリプトの内容からLinux Mintのapt
コマンドは引数によって/usr/bin/apt
やapt-get
などのコマンドを実行していることがわかります。
aptコマンドの入力補完機能の動作不具合
調べてみるとLinix Mintに以前から存在する不具合のようです。
/etc/bash_completion.d/apt-linux-mint
にapt
コマンドの入力補完機能が定義されていますが、ここでの定義がうまくないようです。
根本的な解決策ではないですが、入力補完機能のapt
コマンドの定義を上書きすることで解決できます。
$ source /usr/share/bash-completion/completions/apt
~/.bashrcに上記を追加することで、起動時に回避できるようにすることもできます。