Вы можете использовать type id
или command -v id
, чтобы увидеть, как bash
интерпретирует id
как команду. Для меня я вижу:
$ type id
id is /usr/bin/id
$ command -v id
/usr/bin/id
И да, bash
будет искать $PATH
, хотя однажды найдя его, он запомнит это местоположение, поэтому ему не нужно искать каждый раз. Это может вызвать проблемы, если вы переместите его после того, как запустили его ранее. Вы можете увидеть это с помощью команды hash
hash id
, чтобы увидеть, существует ли такая запись в настоящее время.
Ответ содержится в первом предложении, которое вы процитировали. «systemd будет динамически создавать единицы устройства». Там написано "создать", а не просто "начать". Благодаря интеграции с демоном udev, как только ядро сообщает udev о новом устройстве, модуль.device будет синтезирован на лету. (Аналогичным образом, если устройство исчезнет, блок.device также будет уничтожен.)
Динамически создается сам модуль (, поэтому он существует только в памяти внутри systemd ), а не в файле модуля. Таким образом, это в основном тот же механизм, что и для динамически создаваемых модулей.scope или временных модулей.service (, и в отличие от файлов модулей.mount, которые создаются генератором на основе/etc/fstab
).
Таким образом, на диске нет юнит-файла. Вы можете видеть, что systemctl status some.device
не ссылается ни на какие юнит-файлы, а systemctl show some.device
не содержит никаких FragmentPath
.