メイクファイルを読み、次の文を見つけました。
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メイクファイルリファレンス