Upstart: acepte la entrada del usuario para cambiar xorg.conf

0

Estoy tratando de obtener un script de inicio que requiera la entrada del usuario antes de que comience gdm (el script debería permitirme elegir de una lista de xorg.conf la que me gustaría usar para la sesión actual).

Ya intenté crear un pregdm.conf en / etc / init, que contiene:

start on filesystem
stop on runlevels [06]
#  ...
console output

script
  # script that uses read to gather user input and replaces xorg.conf with the selected one
end script

y cambiando start onen /etc/init/gdm.conf a:

start on (filesystem
          and started dbus
          and started pregdm
          and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1
               or stopped udevtrigger))

Los ecos se muestran en la consola, pero no puedo hacer que espere la entrada del usuario: gdm se inicia de inmediato.

Cualquier puntero?

Muchas gracias

Utaal
fuente

Respuestas:

1

Upstart no está destinado para uso interactivo.

Es probable que la entrada estándar para su script se redirija lejos de usted. Podría intentar usar un descriptor de archivo diferente.

#!/bin/bash
exec 3<&0
read -u 3 -p "Choose one: " input
exec 3<&-

Aquí hay un script de demostración completo que muestra la entrada proveniente de un archivo y del usuario:

#!/bin/bash
exec 3<&0
while read -r line
do
    read -r -p "$line " -u 3 input
    echo "$line/$input"
done < inputfile

Si está utilizando un shell que no tiene la -uopción de lectura:

read input <&3
Dennis Williamson
fuente
Casi me olvido de esto. Muchas gracias por los punteros (y la demostración) sobre la redirección de entrada / salida, no lo sabía. Hasta donde he entendido, jugar con el advenedizo no es una buena solución para mi problema: ¿tiene alguna idea de cómo implementar un menú de inicio interactivo simple?
Utaal
@Utaal: No lo se. ¿Has visto hacer algo a través de grub?
Dennis Williamson
0

Creo que deberías hacer algo como esto:

  [ -x /usr/bin/plymouth ] && /usr/bin/plymouth --hide-splash
  while : ; do
      echo -n $"XXX $1 (Y)es/(N)o? [Y] "
      read answer
      if strstr $"yY" "$answer" || [ "$answer" = "" ] ; then
         ...
  [ -x /usr/bin/plymouth ] && /usr/bin/plymouth --show-splash
zhigang
fuente