fishではbashスクリプトをsource
することは通常できません.一方で、ROSの環境構築等、どうしても読み込まざるを得ない場合があり、そういうときにどうするか書きます.
TL;DR
bassを使うのがおすすめです.
1. 起動シェルをbashにする
「fish bashrc」等で検索するとこの方法がよく見つかります.
起動シェルはbashにし、.bashrc
に以下のように記入すれば、something.bash
を読み込みつつ、自動的にfishが起動するので、あたかもfishが起動シェルであるかのように使えるというわけです.
.bashrc
# 省略して書いているので、ちゃんとした書き方は下のリンクを参照したり、各自調べてください
source something.bash
exec fish
詳しくは以下の記事等を確認してください.
確かにこの方法でも良いのですが、個人的には何か敗北した感じがして、あまり好きではありません.
実際の欠点としては、シェル起動時にしか読み込めないというものが一応挙げられるかもしれません.それで困るケースがどれだけあるのかはよくわかりませんが.
ということで、もう一つの(この記事での位置づけとしては本命の)解決手段を紹介します.
2. bassを使う
これはfishでbashコマンドが使えるようになるユーティリティです.
自分はそうですが、fisherを使っている人は、
# fisher v2 or v4
fisher install edc/bass
# fisher v3
fisher add edc/bass
でインストールできます.また、fundleとomfでもそれぞれ、
config.fish
fundle plugin 'edc/bass'
omf install bass
でインストールできるようです(リポジトリのREADMEより).
bassをインストールさえすれば、あとはconfig.fish
等に
bass source something.bash
と書くだけです.簡単ですね.
参考
fisherの作者によるawesomeリポジトリです.bassを含め、色々と紹介されているので、チェックしてみるとよいかもしれません.