.bashrc
の読み込み時に、404:: command not found
が出ていた
更新履歴
- 2023/5更新:
docker compose -f
の補完による問題は、Docker Desktop
の更新やdnf update
で直ることを確認した。(直った時点のDockerのバージョンは23.0.5
)
事象
ターミナルを開いたときに、プロンプトが表示される前に、404:: command not found
が表示されていた。2行表示されていたが、1箇所修正すれば2行とも表示されなくなった。原因は同一だったのだろう。
原因
原因はbash-compeltion
の初期化時に/etc/bash_completion.d/
ディレクトリの中に、404:: command not found
とだけ書かれたファイルがあり、それを読み取っていたため。
後から知ったが、原因の調査では、bash -lxe
で起動したシェルか、これにコマンドを渡せばデバッグモードになるので調べやすい。-l
はログインシェルとして起動、-x
は実行するコマンドを表示する。-e
はエラー時に即時終了する。というオプション指定。他のオプションは、bash -c "help set"
で見られる。
echo
をたくさん挟むという工夫の足りない方法で調べていたことを反省したい。
原因の原因
原因となったファイルは、docker compose
の補完がおかしいのを直そうとあがいてたときに生まれたもの。
事象
どうおかしいのかというと、
docker compose -f docke
まで打って、Tab
を押すと該当するのがあるにもかかわらず、
docker compose -f y
のようになる。-f
に対する補完候補がyml
とyaml
しかない印象を感じた。
ここでいろいろした
この解決のために結構試して、補完スクリプトのダウンロードを行ったときに、今回の冒頭の問題が起きたようだ。
sudo curl -L https://raw.githubusercontent.com/docker/compose/v2.15.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
などを行ったようだ。
結局これで指定したリソースが存在しないため、404:: command not found
だけを/etc/bash_completion.d/docker-compose
に保存する形になって、~/.bashrc
のロード時に表示されるようになってしまったのが真相だ。
解決(待ち)
このdocker compose
に関するissueを見つけた。
からのこちら:
もうプルリクが提出されているようなので、バージョンアップを待ってればいいようだ。
おわり
しっかり後片付けをしておけば防げた問題。やりっぱなしはやめよう。
2行の表示が1箇所の修正で直ったのは、bash-completion
が2回呼ばれているためかなと思っている。それはそれで良くない気もするが、実害はなさそうなのでひとまず置いておく。
以上です。