Upstart:接受用户输入来切换xorg.conf

Upstart:接受用户输入来切换xorg.conf

我正在尝试获取一个在 gdm 启动之前需要用户输入的启动脚本(该脚本应该允许我从 xorg.conf 列表中选择我想要用于当前会话的脚本)。

已经尝试在 /etc/init 中创建 pregdm.conf,其中包含:

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 立即启动。

有什么指点吗?

多谢

答案1

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

如果你使用的 shell 没有-u读取选项:

read input <&3

答案2

我认为你应该做这样的事情:

  [ -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

相关内容