fishの文法を書くのがめんどくさい人のためのTips
fish shellを使って2年がたちました
今では結構使っている人も多いのではないでしょうか
fishはとても使いやすい良いshellです. ただbashやzshと文法が大きくことなります.
特に苦労する機会が多いのは環境変数の文法や &&, || が使えないことだと思います.
僕の2年悩んだ苦渋にまみれた解決策があるのですが、 余り同じようなことをしている人をみないので共有します.
苦渋にまみれているので、デメリットもあることを念頭に置いておいてください.
fishの環境変数
export HOGE=hensu-dayo
と書くと思います.
fishでは
set -x HOGE hensu-dayo
こうですね.
全然違うので web上に乗っているscriptを毎回書き直すの 面倒です.
苦渋にまみれた解決策
.bash_profile
export HOGE=hensu-dayo exec fish
これであら不思議, 環境変数がbashのままfishを使えます 😇
デメリットとして, bashを起動しようとしてもfishが開きます 😇
&& ||が使えない
bashでは
echo hoge && echo foo
というように記述しますが,
fishでは
echo hoge; and echo foo
といった風になります.
書き直すのめんどくさいですね
苦渋にまみれた解決策
- bash -c オプションを使う
bash -c 'echo hoge && echo foo'
これでそのままコピペできますね😇
それでもやっぱりめんどくさい😇
fishの関数を作って少しでも楽をします.
以下のようなfishスクリプトを~/.config/fish/functions/bash_c.fish
として保存します.
~/.config/fish/functions/bash_c.fish
function bash_c read --prompt="echo 'write bash script: '" bash_script bash -c $bash_script end
これでfishでbash_c
をうち、bashスクリプトを入力するとbashを実行できます.
ただしあくまでbashのプロセスが立ち上がり実行されるので、ここで環境変数の設定とかはできません😇
だれか良い方法を教えてください😇