Makefileに記述した覚えのない処理が追加されてしまい、しばらく悩みました。
abcというターゲットをビルドすると、下記の処理が末尾で実行されます。
cat abc.sh >abc chmod a+x abc
いろいろ調べた結果、makeの暗黙のルールで実行されるコマンドということが分りました。
暗黙のルールは、make -pで確認することができます。
今回、はまったのは、下記の暗黙のルールでした。
%: %.sh # 実行するコマンド (ビルトイン): cat $< >$@ chmod a+x $@
たまたま、同じディレクトリにabc.shというファイルがあったため、暗黙のルールに従ってコマンドが実行されたようです。
ちなみに下記のような手順で現象を再現してみました。
$ cat Makefile abc: abc-global abc-local abc-global: @echo global abc-local: @echo local $ make abc global local $ make -n abc echo global echo local $ touch abc.sh $ make -n abc echo global echo local cat abc.sh >abc chmod a+x abc $