fish shellで.bashrcの環境変数を使う


前置き

fish shell を使っている人向けです。

まず、fishとbashの設定ファイル(.bashrc、.bash_profileとかのこと)には互換性がありません。

大抵のツールはbashを使っていることを前提としているため、ツールを導入したときの設定は「.bashrc」や「.zshrc」などに書き込まれます。 そのため、fishでこれらのツールを使おうとする場合は、手動で設定ファイル(.config/fish/config.fishとか)に書き込まないといけません。

が、手動で設定ファイルを書くのは耐えがたい苦痛なので、「.bashrc」を直接読み込めるようにしたいです。

解決策

bassを利用します。

bassの仕組み

bassは.bashrcを直接読むわけではなく、bashのサブシェルで実行して、環境変数の変更だけをfishに持ってくるツールです。

使い方

fisher install edc/bass
# config.fishに追記

if status is-interactive
    bass source ~/.bashrc
end

注意点

起動が遅くなる

毎回bashを起動するので、シェルの起動が少し遅くなります。 気になる場合は、必要なツールの設定だけを個別に読み込むのがおすすめです。

# 例:nvmだけ読み込む
bass source ~/.nvm/nvm.sh

移植されないもの

環境変数(PATHとか)は移植されますが、bashの関数やエイリアスは移植されません。 あくまで環境変数だけです。