我为我的 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 规则(这似乎是更常见的事情:保持安静,除非发生错误),要么接受它,知道这里没有任何东西真正被破坏;就您的外壳而言,直接推送到您的终端的消息是寄生的。