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


0

我正在尝试获取一个启动脚本,要求在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立即启动。

有什么指针吗?

非常感谢

Answers:


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

我差点忘了这件事。非常感谢关于输入/输出重定向的指针(和演示),不知道它。到目前为止,我已经明白搞乱新贵并不是解决我问题的好方法:您是否知道如何实现简单的交互式启动菜单?
Utaal

@Utaal:我不知道。你有没有看过通过grub做某事?
Dennis Williamson

0

我想你应该这样做:

  [ -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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.