Bashでインラインコマンド部分$()を書いている時にタブ補完しようとするとエラーとなってしまう

 タイトルの件、 「Bashでインラインコマンド部分$()を書いている時にタブ補完しようとするとエラーとなってしまう」ですが、まず調べてみた結論から書いておきます。
(ここで「インラインコマンド」って書いちゃってますが、機能としては「Command substitution」というものです)

結論

 関連するパッケージbash-completionの新しいバージョン (1:2.8-3)でこのバグは修正されているようです。
パッケージがバージョンアップされるのを待つのが無難でしょう。

経緯

 Bashで$()を用いてインラインコマンドを書こうとしたとき、タブ補完しようとTabキーを押したらエラーが出てしまいました。どうも$()単独で書いているときはエラーとはならず、
emacs $(echo
のように先頭にコマンドを書いてある状態で$()を書いてるときにタブ補完しようとすると起きる模様。

表示されるエラーは以下のようになってました。
$ echo $(bash: unexpected EOF while looking for matching `)'
bash: syntax error: unexpected end of file


$ emacs $(echo ../bash: eval: line 22: unexpected EOF while looking for matching `)'
bash: eval: line 23: syntax error: unexpected end of file
bash: eval: line 22: unexpected EOF while looking for matching `)'
bash: eval: line 23: syntax error: unexpected end of file


原因を調べるためネットで検索してみる

「bash completion inline command」で検索すると、いくつか関連する情報が見つかりました。


読んでみると、自分はあまり知識が無いので詳しくは分かりませんが、どうやらbash-completionパッケージが関係している模様。その他にもいろいろ調べて当たってみると、1:2.8-3のバージョンでこのバグは修正されているようでした。なおUbuntu 18.04 LTSではこのパッケージのバージョンは1:2.8-1ubuntu1(2019年7月6日現在)。なので、Ubuntuを使っている場合は修正されたバージョンが来るのを待つのがいいのでしょう。


コメント

スポンサーリンク


このブログの人気の投稿

gnuplotでプロットなどの色をcolornameの指定で変更する

catコマンドの出力を行番号付きにするためのコマンドラインオプション(-n, -b)

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplot : グラフにグリッド線を描く方法(set grid)

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)