Bashでインラインコマンド部分$()を書いている時にタブ補完しようとするとエラーとなってしまう
タイトルの件、 「Bashでインラインコマンド部分$()を書いている時にタブ補完しようとするとエラーとなってしまう」ですが、まず調べてみた結論から書いておきます。
(ここで「インラインコマンド」って書いちゃってますが、機能としては「Command substitution」というものです)
パッケージがバージョンアップされるのを待つのが無難でしょう。
のように先頭にコマンドを書いてある状態で$()を書いてるときにタブ補完しようとすると起きる模様。
表示されるエラーは以下のようになってました。
読んでみると、自分はあまり知識が無いので詳しくは分かりませんが、どうやらbash-completionパッケージが関係している模様。その他にもいろいろ調べて当たってみると、1:2.8-3のバージョンでこのバグは修正されているようでした。なおUbuntu 18.04 LTSではこのパッケージのバージョンは1:2.8-1ubuntu1(2019年7月6日現在)。なので、Ubuntuを使っている場合は修正されたバージョンが来るのを待つのがいいのでしょう。
(ここで「インラインコマンド」って書いちゃってますが、機能としては「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 Tab Completion: '-bash: unexpected EOF while looking for matching `)' -bash: syntax error: unexpected end of file
- Bug #1312243 “error messages completing args inside $()” : Bugs : bash-completion package : Ubuntu
読んでみると、自分はあまり知識が無いので詳しくは分かりませんが、どうやらbash-completionパッケージが関係している模様。その他にもいろいろ調べて当たってみると、1:2.8-3のバージョンでこのバグは修正されているようでした。なおUbuntu 18.04 LTSではこのパッケージのバージョンは1:2.8-1ubuntu1(2019年7月6日現在)。なので、Ubuntuを使っている場合は修正されたバージョンが来るのを待つのがいいのでしょう。
コメント
コメントを投稿