Fishに変えても完全に乗り換えられないという人は、Bash/ZshとFishの環境変数の設定を共有したいこともあるでしょう。
そういう方は .bash_prorile
や .zshenv
の最後で以下のように最後に exec fish
を記述すればよい。
# .bash_profile | .zshenv
...
## 環境変数の設定など
...
exec fish # PATHが通っている前提
利点
- 以前使っていたシェル(bash, zsh)の環境変数をそのまま利用可能
-
s/export/set -x/
という環境変数のコピー・置換作業から開放される - 後から以前のシェルに戻りたいときに設定の差分見て頑張る必要がなくなる
何故これだけでいいの?
環境変数は子プロセスに伝搬するため。
そのため .bash_profile, .zshenv
経由で環境変数を設定したあとでfishを起動することで (親)bash/zsh => (子)fish
となるので環境変数の共有が可能。
終わりに
環境変数はこの方法で共有できるけど、エイリアスなどは bash/zsh <=> fish
の記法の差分でシンプルには行かない。
今その問題をクリアするためにシコシコ頑張っているので出来たタイミングで公開したい。