bash: requirements.txt: cannot overwrite existing file
と表示されたので上書きできるようにする。
発生
VSCodeのリモートコンテナでリビルドした時か分からないけれど、次のようなコマンドで出力をファイルにリダイレクトするとエラーが起こることがありました:
$ pip freeze > requirements.txt
bash: requirements.txt: cannot overwrite existing file
原因
初心者的な問題で単にシェルの設定がいつの間にか変わってたというだけでした。
シェルのnoclobber
という設定項目がonだとリダイレクトによる上書きが禁止になります。これがonに切り替わったために起こっていました。
イメージを変更したことで設定が変わったのが今回の原因だと思っています。VSCodeのpythonコンテナを使っていたのですが、VARIANT=3-bullseye
からVARIANT=3
に修正したところ起こったような気がします。
対処
set +o noclobber
で上書き禁止設定をoffにできます:
# 既存の設定の一覧をgrep
$ set -o | grep nocl
noclobber on
# 上書き禁止を解除する
$ set +o noclobber
# 確認
$ set -o | grep nocl
noclobber off
おわり
簡単なことだけど、コマンドは忘れそうなのでメモとして記録しました。
.devcontainer
のディレクトリの中に、Use -bullseye variants on local arm64/Apple Silicon.
という記述が見られるので、該当しない場合は--bullseye
は付与しない方がいいのでしょう。付与をやめてリビルドしたら上書き禁止設定が働くようになったと思います。
お手軽な軽量PC(物理)がほしいな。
参考
- linux - "cannot overwrite existing file" from ''echo content >file.sh'' - Stack Overflow
- 【 set 】コマンド(応用編1)――ファイルの上書きやシェルの終了、ジョブ終了後の通知動作を変更する:Linux基本コマンドTips(207) - @IT
以上です。
Amazonアソシエイト(set
コマンドの説明は8章にあります。購入したけどまだ届いてません。)
Bitly
コメント