Вы не можете избавиться от него, и в любом случае нет причин его удалять. Это происходит из-за того, что bash проверяет, поступает ли ввод с терминала (, который он вызывает isatty
). На самом деле он не использует эту информацию в вашем случае, только когда передаются различные параметры. Если вам интересны подробности, прочтите исходный код функции(read_builtin
в builtins/read.def
).
Тот факт, что TCGETS
ioctl возвращает ENOTTY
, позволяет приложению определить, что ввод не является терминалом. Это ожидается.Тот факт, что функция возвращает статус ошибки, не означает, что что-то не так.
Вы должны использовать host_device
вместо , что, по общему признанию, сложно, поскольку не задокументировано.
В вашем случае нерекомендуемые -опции — это
-blockdev node-name=q1,driver=raw,file.driver=host_device,file.filename=/dev/loop0 \
-device virtio-blk,drive=q1