最近、私はENV{REMOVE_CMD}
すべてのANDが必要な状況でmatchを使用する必要がないこの変数を見つけました。 udevルールに設定できる他の便利な変数に関する情報を見つけようとしましたが、残念ながら価値のあるものが見つかりませんでした。ACTION=="remove"
add
remove
ENV
すべての変数のリストをどこで見つけることができるかを知っている人はいますか?
答え1
ENV
変数は非常に自由な形式のようです。デバイスにバインド。適用される唯一の制限は、これらのキーのどれも使用できないことです。使用:作業、サブシステム、DEVTYPE、メイン、部、ドライバ、IFINDEX、DEVNAME、DEVLINKS、DEVPATH、ラベル。
それに加えて、環境変数の解釈は他の規則と手順に依存します。grep -rni 'ENV{' /{lib,etc}/udev/rules.d
環境変数の消費者とプロバイダを見つけるために使用されます。REMOVE_CMD
場合によっては、このファイルはそれ/lib/udev/rules.d/50-udev-default.rules
を処理します。
# run a command on remove events
ACTION=="remove", ENV{REMOVE_CMD}!="", RUN+="$env{REMOVE_CMD}"
ACTION=="remove", GOTO="default_end"
次のコマンドを使用すると、より多くの環境変数を見つけることができます。
grep -hrPo 'ENV{\K[^}]*(?=}=[^=])' /{etc,lib}/udev/rules.d | sort -u
たとえば、この95-upower-hid.rules
ファイルを考えてみましょう。このファイルはUPOWER_BATTERY_TYPE
変数を設定します。他のルールではこのファイルを使用しませんが、優れた性能デーモンはイベントを追加/変更/削除するためにudevdに登録します。イベントが発生すると、UPowerはデバイスにこの変数を具体的に照会し、通常のマウス、UPS、またはUnifyingレシーバデバイスとして処理する必要があるかどうかを判断します。
別の(より有用な)例は、UDISKS_IGNORE
ドライブリストからデバイスを隠すようにグラフィックファイルブラウザをプロンプトするために使用できる環境変数です。具体的には、udisks2の場合は、次の変数を見つけることができます。USB(8)マンページ(このページを見つけるために使用man -K UDISKS_IGNORE
)