便利シェル「fish」では、最初から各種設定が良い具合に「有効」になっているので、ほかのインタラクティブシェルと違ってユーザーが設定を追加する必要性がほとんどない。加えるとすれば、コマンドの短縮入力を実現するエイリアスを設定するくらいのものだ。

bashやzshではエイリアスで短縮入力を実現するが、fishではこの機能が関数で実現されている。bashやzshには関数とエイリアスがそれぞれ別モノとして用意されているが、fishでは全て関数に集約されているのだ。試しに「functions」と入力してエンターキーを押すと、次のように定義されている関数の一覧を表示させることができる。

定義されている関数一覧

これはエンターキーではなく、TABキーでも構わない。その場合は「function」と入力し、空白を1つ入れてからTABキーを押すことで、次のように関数を一覧表示させられる。

TABキーを使って関数一覧を表示させた場合

なお、functionを引数なしで実行すると、次のようにfunctionの使い方のマニュアルが表示される。

functionを引数なしで実行した場合には使い方が表示される

マニュアルの最後のほうには、関数の簡単なサンプルが掲載されている

fishのシンタックスは、インタラクティブシェルとして使う場合にはbashやzshとほとんど同じように使えるようになっているが、実はシンタックスが異なっており、関数を定義しようとするとだいぶ違った書き方をすることになる。

fishでは、自分で関数を定義することがbashやzshで言うところのエイリアス設定に相当する。例えば、次のように関数を定義して利用することができる。

関数「today」を定義・実行した場合の例

上記の例では「today」という関数を定義している。中身は「date;echo;cal」と同じだ。定義した後は、「today」と実行すると「date;echo;cal」が実行されていることがわかる。こんな感じで短縮入力を設定することができる。

毎回ログインしてから関数を定義するのは面倒なので、こうした設定はホームディレクトリ以下の「.config/fish/config.fish」というファイルに書いておく。ここに書いておくと、fishの起動時に自動的に処理されるため、いちいち定義しなくても利用できるわけだ。

作業の手を抜く最大のポイントは、こうした便利機能を積極的に活用するところにある。よく使う処理は、関数を定義して短縮入力できるようにしてみよう。詳しい書き方については、次回紹介する予定だ。