En Linux, ¿hay alguna forma de que un script de shell compruebe si su entrada estándar se redirige desde el dispositivo nulo (1, 3) * , idealmente sin leer nada?
El comportamiento esperado sería:
./checkstdinnull
-> no
./checkstdinnull < /dev/null
-> yes
echo -n | ./checkstdinnull
-> no
EDIT
mknod secretunknownname c 1 3
exec 6<secretunknownname
rm secretunknownname
./checkstdinnull <&6
-> yes
Sospecho que "solo" necesito leer el número de may / min del dispositivo de entrada . Pero no puedo encontrar una manera de hacerlo desde el shell.
* No es necesario solo
/dev/null, pero cualquier dispositivo nulo, incluso si se creó manualmente con mknod.
{ readlink -f /dev/stdin; } <&6para el caso donde usó exec y eliminó el nodo es /root/secretunknownname (deleted). Como muestra que el archivo se eliminó: ¿no es suficiente para lo que necesita?
statsolución es la única que funciona.
/dev/null, pero no es necesario. Puede "alias" con mknods ilustrado en mi ejemplo.
/dev/null, o simplemente que no es un tty?