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を使っている場合は修正されたバージョンが来るのを待つのがいいのでしょう。


コメント

スポンサーリンク


このブログの人気の投稿

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

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

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

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

MPV(動画再生ソフト)のキーボード操作方法