执行udev脚本后需要按回车才能得到提示

执行udev脚本后需要按回车才能得到提示

我为我的 Raspberry Pi (Debian) 设置了一个简单的udev规则来自动安装 USB HDD。它只是运行一个安装所有设备的脚本,/etc/fstab因为它是我唯一拥有的设备,而且我将在那里使用。我只需要这个,但我看到有一些环境变量传递给脚本,并尝试让它打印驱动器的标签和设备节点名称,例如只是为了进行一些实验。

我让它工作了,但现在当我插入它时,我得到例如:

pi@Gawain ~ $ Disk TOSHIBA_EXT (/dev/sda1) plugged in.Mounting...

然后在下一行中我没有得到任何提示,但这并不是说脚本没有正确退出或任何其他东西,它正在等待输入,如果我输入像“ pwd”这样的东西,例如它可以工作,只是它没有显示提示。

我真的不关心这一点,因为这只是一个小装饰,我可能会留下脚本来默默地安装驱动器,但我很好奇为什么它会这样。

udev规则: KERNEL=="sd*1", ACTION=="add", RUN+="/home/pi/scripts/mountUSB.sh"

挂载USB.sh:

#!/bin/bash
CONSOLE="/dev/$(who | awk '{print $2}')"
echo "Disk $ID_FS_LABEL ($DEVNAME) plugged in.Mounting..." > $CONSOLE
sudo mount -a

答案1

当您直接打印到终端时,您的 shell 不知道这一点,因此它不知道再次打印其提示符。运行时您会得到类似的行为,例如(sleep 1; echo foo) &

我建议要么不打印你的 udev 规则(这似乎是更常见的事情:保持安静,除非发生错误),要么接受它,知道这里没有任何东西真正被破坏;就您的外壳而言,直接推送到您的终端的消息是寄生的。

相关内容