En mi script bash, monto particiones, las verifico, les copio archivos y las desmonto. Cuando el script monta la partición, Nautilus aparece con una ventana que muestra la partición y el foco de robo. Esto es algo que quiero evitar.
Nota: Sé que puedo cambiar el comportamiento de esto en Configuración del sistema, Detalles, Medios extraíbles Never prompt or start programs on media insertion
, pero no quiero cambiar el comportamiento, por ejemplo, si una memoria USB está conectada, solo quiero evitarlo en mi script bash . Dado que este script se ejecuta en las computadoras de otros usuarios, no puedo modificar esta configuración (en el script) porque si se termina de manera anormal, dejará las configuraciones modificadas en su lugar (tampoco creo que sea necesario hacerlo).
En realidad, esta visualización automática no parece consistente. Si hago exactamente el mismo comando desde la terminal, Nautilus no se muestra, y sé que hay otras monturas en mi script que no se muestran. Entonces, ¿qué podría estar causando esto? Aquí hay un ejemplo del código (ambos provocan que se abran ventanas nautilus separadas):
mount $dev $target
mkdir -p $target/home
mount $homedev $target/home
Estoy interesado en comprender el proceso por el cual el montaje señala a Nautilus y por qué sucede esto (cuando no lo hace si monte la partición desde el terminal). Y cuál es la mejor manera de evitar que esto suceda.
Noté este comportamiento a partir de la versión 11.10 (si no recuerdo mal). Actualmente estoy ejecutando 12.04, pero el script tiene que funcionar en todas las versiones compatibles. No creo que la solución deba involucrar la modificación de la configuración del sistema (que puede diferir entre versiones). Por ejemplo, si observa otras cosas que montan particiones (como os-prober), no aparecen ventanas nautilus cuando se montan diferentes particiones.
El guión se puede encontrar aquí . Y aquí está la parte donde aparece Nautilus. Creo que también aparece aquí , pero he estado centrando mis pruebas en el primer enlace. Aquí es donde no aparece, llamado antes de esas otras monturas: tenga en cuenta que he reescrito las primeras como: solo lectura y dentro de una declaración if y no hace ninguna diferencia.
Idealmente, la respuesta explicará por qué está sucediendo esto y cómo prevenirlo, en otras palabras, explicará por qué el in-script mount
se trata de manera diferente al emitido desde un terminal. También se aceptará una buena solución si se trata de una solución completa y práctica que sea compatible con todos los entornos de escritorio (ubuntu, kubuntu, xubuntu, lubuntu, etc.). También quiero evitar un aumento exponencial en las pruebas para verificarlo.
Gracias por adelantado
============
Solución según el enlace de papashou :
add_udev_rules ()
{
for i in "$dev" "$homedev" "$bootdev" "$usrdev"; do
if [ -n "$i" ]; then
block=${i#/dev/}
echo "KERNEL==\"""$block""\",ENV{UDISKS_PRESENTATION_HIDE}=\"1\"" >> "$wubi_move_dir"/wubi_move.rules
fi
done
cp "$wubi_move_dir"/wubi_move.rules /etc/udev/rules.d/wubi_move.rules
udevadm trigger > /dev/null 2>&1
}
remove_udev_rules ()
{
rm /etc/udev/rules.d/wubi_move.rules
rm "$wubi_move_dir"/wubi_move.rules
udevadm trigger > /dev/null 2>&1
}
Esto logra el resultado deseado, pero se siente como un enfoque de mazo. Creo que probablemente haya un ajuste fino en udev que permitirá que la partición siga apareciendo en Nautilus (y otros exploradores de archivos) sin aparecer cuando esté montada. Por cierto, si alguien quiere probar esto, el siguiente script mostrará el efecto emergente de nautilus:
mkdir -p /tmp/testmount
mount /dev/sda1 /tmp/testmount
sleep 3
umount /dev/sda1
mount /dev/sda1 /tmp/testmount
sleep 3
umount /dev/sda1
mount /dev/sda1 /tmp/testmount
sleep 3
umount /dev/sda1
mount /dev/sda1 /tmp/testmount
sleep 3
umount /dev/sda1
rmdir /tmp/testmount
Voy a seguir jugando udev
y también he presentado un error , ya que esto no tiene ningún sentido para una partición que no está insertada para actuar como una tarjeta USB / multimedia insertada en el soporte. Además, udevadm trigger
no es una operación económica que parece (al menos en 12.04) congelar temporalmente todo.
Entonces, en resumen, tengo una solución viable (gracias a todos los que me ayudaron), que puedo implementar o no (aún no estoy seguro); pero seguiré buscando otra cosa Gracias