LoginSignup
28
19

fishでbashスクリプトを読み込む

Last updated at Posted at 2019-01-28

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を含め、色々と紹介されているので、チェックしてみるとよいかもしれません.

28
19
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
19