udev 和“su -c ”的行为不一致

udev 和“su -c ”的行为不一致

我在计算机中设置了一个 JACK 服务器来处理所有声音输入和输出。当我连接外部 USB 声卡(名称:CODEC)时,我希望 udev 能够检测到它,因此我设置了 udev 规则来检测卡何时插入和拔出,并相应地运行命令:

ACTION=="add", SUBSYSTEM=="sound", ATTR{id}=="CODEC", RUN+="/home/myname/scripts/soundcard.sh connected"
ACTION=="remove", SUBSYSTEM=="sound", ENV{ID_MODEL}=="USB_Audio_CODEC", RUN+="/home/myname/scripts/soundcard.sh disconnected"

要检查是否检测到该卡,请运行 soundcard.sh 脚本

$ aplay -l > logfile1.txt

我在输出中发现:

card 2: CODEC [USB Audio CODEC], device 0: USB Audio [USB Audio]
  Subdevices: 1/1

正如我应该的,但是当我使用

$ su -c "aplay -l > logfile2.txt" -l myname

我不!以用户身份运行脚本会产生不同的结果!这是怎么回事?有什么线索吗?

相关内容