Fedora
$(rpm -E %fedora) 這行是什麼意思?
我正在嘗試向我的 Fedora 添加一個新的儲存庫,並被要求引入以下命令:
su -c 'yum localinstall --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm'
我試圖了解命令的每個部分的含義,並且幾乎擁有一切,除了 line
$(rpm -E %fedora)
。我用Google搜尋但一無所獲,所以我決定在這裡問。
它執行命令
rpm -E %fedora
並將 stdout 的輸出替換為外部命令。
rpm -E
評估傳遞給它的文本中的變數。
RPM 宏
當您有這樣的問題時,最好查閱手冊頁。看一下
rpm
手冊頁。$ man rpm ... -E, --eval='EXPR' Prints macro expansion of EXPR.
%fedora
如果您在手冊頁中進一步了解這是一個宏,rpm
您可以看到哪些文件提供了宏定義。Macro Configuration /usr/lib/rpm/macros /usr/lib/rpm/redhat/macros /etc/rpm/macros ~/.rpmmacros
看看裡面
/etc/rpm/macros
會揭示這個定義。$ grep fedora /etc/rpm/macros* /etc/rpm/macros.dist:%fedora 19
所以我們可以看到有一個定義
%fedora
,在我的系統(Fedora 19)上它的值為“19”。內聯命令執行
該符號
$(..)
將執行括號之間的任何命令,並將返回的結果替換為它們的位置。例子
$ echo $(echo hi) hi
或者在你的情況下:
$ echo $(rpm -E %fedora) 19
把它們放在一起
因此,當您詢問的命令執行時,會發生以下情況。使用該命令
%fedora
評估RPM 宏。rpm
該命令在行中執行。一旦擴展為“19”,該值將在更大的yum
命令中.rpm
用於為給定版本的 Fedora 安裝適當的文件。