Ich kann das Problem vermuten: Wenn Sie eine udev-Regel verwenden, wird Ihr Skript ausgeführt, noch bevor die gvfs-Ebene das Gerät überhaupt erkennt. Viel weniger hat eine Chance, es automatisch anzuhängen.
Die Idee von udev ist, dass es zuerst "uevents" vom Kernel empfängt, sie gemäß den Regeln verarbeitet und sie dann an alle anderen Programme weiterleitet. (Während andere Anwendungen können auch direkt die Ereignisse empfangen, ist es selten getan, als verarbeitete diejenigen viel mehr Informationen haben und werden garantiert nur gesendet werden, wenn das Gerät betriebsbereit .)
Mit anderen Worten, gvfs wird erst nach der Ausführung Ihres Skripts über das Gerät informiert .
Wenn Sie nach dem Einhängen von gvfs etwas tun möchten, müssen Sie auf Ereignisse reagieren, die von gvfs gesendet werden . Anstelle einer udev-Regel benötigen Sie ein Skript, das den D-Bus verwendet und auf Signale im Sitzungsbus wartet. Beginnen Sie mit dbus-monitor --session
oder busctl monitor --user
, um herauszufinden, was gesendet wird, und verwenden Sie dann die D-Bus-Module von Perl oder Python.
Als Randbemerkung können Sie anstelle von for var in $(ls -d /some/path*)
nur dasselbe Ergebnis erzielen for var in /some/path*
. Es ist nicht ls, dass Platzhalter erweitert werden - es ist die Shell selbst.