我正在尝试获取一个在 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