Friendly interactive shell
fishの文法は他のシェルスクリプト言語と少し異なる。これらの変更は言語を容易に学習できるように、そして言語を強力にしている。fishとBashに代表する他のシェルスクリプト言語との明確な違いは、変数はトークンを必要としない。これはすなわち、引用符を用いて文字列を囲むということを滅多にしないのである。
fishと他のシェルスクリプト言語との重要な違いの一つに、サブシェルの有無がある。他の言語に於いてパイプラインや関数、ループのような沢山のタスクはサブシェルを呼ぶことで実装している。サブシェルは親プログラムのために1-2個のコマンドを実行し終了する、シンプルな子プログラムである。しかしこの変更は、サブシェルの如何なる変化もメインシェルへ与えない。これはすなわち、変数の代入や多くのビルトイン関数が期待通りに動作しないのである。fishはサブシェルを決して呼ばず、それゆえ多くのビルトイン関数が完全に動作するのである。