LINUX.ORG.RU

udev и вложенное выражение (атрибут RUN)

 , ,


0

1

Можно ли как-нибудь выполнить последовательность команд (атрибут RUN) не вынося в отдельный скрипт?

/etc/udev/rules.d/10-automount.rules

В чём проблема - вложенная последовательность команд не выполняется.

`/bin/lsblk /dev/%k -dnro FSTYPE`

Не выполняется также если напечатать так:

$(/bin/lsblk /dev/%k -dnro FSTYPE)

Само правило udev:

ACTION=="add" KERNEL=="sd[a-z][0-9]" RUN+="/bin/mkdir -p /media/%k" RUN+="/bin/mount -t `/bin/lsblk /dev/%k -dnro FSTYPE` /dev/%k /media/%k"

Потому что udev — это не shell.

Приведённые тобой примеры технически представляют собой небольшие программы на языке командной оболочки. Udev не содержит в себе интерпретатора этого языка.

Тебе нужно либо написать что-то вроде RUN += "/bin/sh -c 'mount $(...)'" (но я не помню правила интерпретирования вложенных кавычек, возможно выше есть ошибки), либо запихнуть все свои команды в отдельный скрипт с shebang-ом и вызывать его как исполняемый файл.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)