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章にあります。購入したけどまだ届いてません。)
https://amzn.to/3xaorlv

 
  
  
  
  

コメント