背景
もともとはfishではなくzshを使っていました。キーバインドやghq/pecoなどを利用していろんなカスタマイズをしていました。ある日、.zshrcにexportを追加しようとシェルからリダイレクトで追記をしました。したつもりになっていました。コンソールを再度開くとカスタマイズしたキーバインドが使えなくなっており、調べてみると.zshrcが1文のexportを残してきれいになっていました。そこからfishを利用するようになり、同じ過ちを起こさないように今回の対策を行います。
設定
事前動作確認
$ cat hoge.txt hoge $ echo fuga > hoge.txt $ cat hoge.txt fuga
>
を一個つけ忘れると全部上書きされる。危険。
調べてみたところ
bash, zshは noclobber
オプションで設定できるが、fishには存在しない。
代わりに>?
を使えとのこと。これなら中身がある場合上書きされない。
$ echo hige >? hoge.txt The file 'hoge.txt' already exists $ echo hige >? hige.txt $ cat hige.txt hige
ただこれは >?
を使った場合上書きされないだけで、>>
を打ち間違えて >
にしちゃうと上書きされる。解決になってない。
結論
おとなしく /Users/hitoshi.fujita/.config/fish
をGitで管理します。
$ cd ~/.config/fish $ git add --all $ git commit -m"my first commit"