• ベストアンサー

zshrcのfunctionの作り方

C言語のコンパイルの際、 gcc -Wall -o xxx xxx.c と入力する手間を省きたいので、rcファイルに function gcc () { gcc -Wall -o "$1%.c" "$1" } としているのですが、 gcc xxx.c を実行するとターミナルが落ちてしまいます。 何がいけないのでしょうか。 %.c は、 .cを除く目的で使っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

>gcc.c%.c そのあたりは確認済みなのかと思ってました。zshはあまり知りませんが、bash だと、 "${1%.c}" ですね。多分同じでは?

tossdk
質問者

お礼

手取り足取りありがとうございました。 おかげさまで無事思い通りの結果が得られました!

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

自分自身を呼び出すように書いてあるので、無限に再帰呼び出しを続けるからですね。スタックがあふれた時点でzshが異常終了します。 function gcc () { /usr/bin/gcc -Wall -o "$1%.c" "$1" } などとして、関数の中から関数自分自身を呼び出さないようにします。

tossdk
質問者

補足

ありがとうございます! 確かにgccは行われるようになりました! しかし、例えば gcc test.c を行うと gcc.c%.c というファイルが出来てしまい、末尾の.cを除く部分がまるで機能していません。 どうすれば良いかご存知でしたら教えていただきたいです。

関連するQ&A