linux-登录时播放声音?

linux-登录时播放声音?

我安装了没有 GUI 的 Gentoo,并将其附加aplay /usr/shar/sounds/startup3.wav &> /dev/null &到我的 /etc/bash/bashrc 文件中。这在播放声音文件时工作正常,但是一旦声音播放完毕并按下回车键,它就会告诉我该过程已完成。当我让声音在前台播放时,在声音播放完毕之前,我无法在终端中执行任何操作。

有没有什么办法可以在登录后播放声音而不产生任何输出或中断?

答案1

该“完成”消息是因为 shell 仍然在对该命令进行作业控制:

$ sleep 10 &
[1] 660
$ jobs
[1]+  Running                 sleep 10 &

 (time passes)

$ 
[1]+  Done                    sleep 10

您可以使用disown(a)简单地从作业控制中删除所有作业

$ sleep 100 &
[1] 3804
$ jobs
[1]+  Running                 sleep 100 &
$ disown
$ jobs
$

我不知道如何用它的开头(b)来放弃一个作业,所以我建议你直接disown在 bashrc 中将 a 放在 sound 命令之后。但是这会放弃所有作业——我不知道这是否是你想要的。否则你可以使用disown %aplay


(A)man bash

放弃 [-ar] [-h] [jobspec ...] 如果没有选项,则每个 jobspec 都会从活动作业表中删除。如果没有 jobspec,并且没有提供 -a 或 -r,则使用 shell 的当前作业概念。如果给出了 -h 选项,则不会从表中删除每个 jobspec,但会对其进行标记,以便 shell 收到 SIGHUP 时不会向该作业发送 SIGHUP。如果没有 jobspec,并且没有提供 -a 或 -r 选项,则使用当前作业。如果没有提供 jobspec,则 -a 选项表示删除或标记所有作业;没有 jobspec 参数的 -r 选项将操作限制为正在运行的作业。除非 jobspec 未指定有效作业,否则返回值为 0。

(b)然而,在 Z Shell 中zsh这很容易:

zsh$ sleep 10 &!
zsh$ jobs
zsh$

相关内容