我在 Windows 10 上使用适用于 Windows Bash 的 shell Git,并且我希望在命令提示符准备就绪时播放声音。当我的终端窗口完全初始化或命令执行完毕时,此声音反馈应可帮助我返回命令行。
这是我当前的 .bash_profile 行:
export PROMPT_COMMAND='history -a && powershell -c "(New-Object Media.SoundPlayer C:/Windows/Media/chimes.wav).PlaySync();"'
我怎样才能使其异步?我试过了nohup
,&
但这些在这里不起作用。文档提到方法Play
,但这根本不会产生声音。
答案1
要异步运行某些东西(在后台),请将其放在&
最后(;
否则可能在最后)。powershell -c … &
基本上应该可以工作。
在交互式 Bash 中,作业控制默认启用,并powershell -c … &
在完成后触发来自 shell 的消息(即使从 运行PROMPT_COMMAND
)。在显式子 shell 中运行命令以规避此问题。它将是这样的:
(powershell -c … &)
子shell 本身会同步运行,所以当前 shell 不会把它当成作业。里面的命令会异步运行,但不会成为当前 shell 的作业。
这应该有效:
export PROMPT_COMMAND='history -a && (powershell -c "(New-Object Media.SoundPlayer C:/Windows/Media/chimes.wav).PlaySync();" &)'