引用符についての何かが混乱していますmake
。あなたのコードは私にとって同じように動作しますが、以下は期待どおりに機能します:
help:
@echo -n Shouldn\'t print a newline
実行可能ファイルへのパスをハードコーディングすることもできます。
help:
@/bin/echo -n "Shouldn't print a newline"
の Mac OS X のマニュアル ページではecho
、シェル組み込みの の存在について説明しているときに、のはオプションをサポートしていないecho
と述べていますが、最初の代替案が機能する理由を (とにかく) 説明できていません。echo
sh(1)
-n
デフォルトでコマンドを実行するためにmake
使用されていることの確認。Make manual 5.3.2 シェルの選択では、次のような仕様が指定されています。sh
シェルとして使用されるプログラムは、変数 SHELL から取得されます。この変数が makefile で設定されていない場合、プログラム /bin/sh がシェルとして使用されます。シェルに渡される引数は、変数 .SHELLFLAGS から取得されます。.SHELLFLAGS のデフォルト値は通常 -c で、POSIX 準拠モードでは -ec です。
の
SHELL = bash
help:
@echo -n "Shouldn't print a newline"
@echo -n Shouldn\'t print a newline
どちらの echo ステートメントも同じように動作します (改行は表示されません)。したがって、その変数がなければ、 のbash
ふりをしますsh
が、2 つの行の評価は異なります。質問 1: なぜですか? 質問 2: 2 行目は、エミュレートされた ではなく、ネイティブbash
エコーまたはですか?/bin/echo
sh
echo