Upstart: принять пользовательский ввод для переключения xorg.conf
Я пытаюсь получить сценарий запуска, требующий пользовательского ввода, выполняющегося до запуска gdm (сценарий должен позволить мне выбрать из списка xorg.conf тот, который я хотел бы использовать для текущего сеанса).
Уже пытался создать файл pregdm.conf в / etc / init, содержащий:
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
и меняется start on
в /etc/init/gdm.conf чтобы:
start on (filesystem
and started dbus
and started pregdm
and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1
or stopped udevtrigger))
Эхо отображается в консоли, но я не могу заставить его ждать ввода пользователя: GDM запускается сразу.
Есть указатели?
большое спасибо
2 ответа
Upstart не предназначен для интерактивного использования.
Вполне вероятно, что стандартный ввод для вашего сценария перенаправлен от вас. Вы можете попробовать использовать другой файловый дескриптор.
#!/bin/bash
exec 3<&0
read -u 3 -p "Choose one: " input
exec 3<&-
Вот полный демонстрационный скрипт, который показывает входные данные из файла и от пользователя:
#!/bin/bash
exec 3<&0
while read -r line
do
read -r -p "$line " -u 3 input
echo "$line/$input"
done < inputfile
Если вы используете оболочку, которая не имеет -u
опция для чтения:
read input <&3
Я думаю, что вы должны сделать что-то вроде этого:
[ -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