$(shell uname -r) のシェルはどういう意味ですか?

$(shell uname -r) のシェルはどういう意味ですか?

メイクファイルを読み、次の文を見つけました。

 make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules

シェルが何であるかを説明できる人はいますか?ここではコマンドを置き換えようとしていますが、uname -rで十分です。シェルという言葉が使われるのはなぜですか?

私はmanシェルで実行しようとしましたが、期待どおりに何も表示されません。また、コマンドラインでshell uname -rを実行してみました。これはうまくいきません。私はこの変数がmakeで定義されていると思います。

ベストアンサー1

この行はおそらくMakefileのための再帰呼び出しの中にありますmake

Makefileは$(VAR)(または${VAR})を使用してローカル変数または環境変数を表します。

「VARを実行して結果を取得する」を意味するbashとの違いに注意してください。$(VAR)したがって、Makefileで同様の効果を得るために、他の構文が使用されます。

$(shell uname -r)

まとめる

  • $(shell uname -r)結果として拡大されますuname -r
  • $(PWD)拡張する$PWD

バラよりGNUメイクファイルリファレンス

おすすめ記事