通过 Windows 快捷方式启动时 WSL 脚本失败

通过 Windows 快捷方式启动时 WSL 脚本失败

我有一个小脚本,用于检查rsync备份是否已完成,如果完成则使我的机器休眠。
这是在 WSL (Debian) 上。

#!/bin/bash

# if rsync is running, then wait 5
while ps aux | grep -q -e "[r]s";
do
    sleep 5
    echo "script running..."
done

# sleep PC
psshutdown64.exe -d -t 0

从 WSL 窗口启动时,这可以正常工作。
如果脚本正在运行,它会等待,当我终止时rsync,机器会休眠。

script running...
script running...
script running...
script running...

PsShutdown v2.53 - Shutdown, logoff and power manage local and remote systems
Copyright (C) 1999-2021 Mark Russinovich
Sysinternals - www.sysinternals.com

我正在尝试创建一个 Windows 快捷方式来启动相同的脚本。

启动快捷方式时,循环永远不会退出。不睡觉
就一直显示。script running...

我已经尝试过bash.exe -cwsl.exedebian.exe、 和powershell.exe来启动脚本。
没有一个起作用。

有趣的是,当我通过 cmd 或 Powershell 窗口启动脚本时,它工作正常:

wsl sh sleep.sh

PsShutdown v2.53 - Shutdown, logoff and power manage local and remote systems
Copyright (C) 1999-2021 Mark Russinovich
Sysinternals - www.sysinternals.com

但如果我使用快捷方式启动它,它就会失败。

编辑:脚本保存在Documents.但该脚本确实是可执行的,并且在 WSL 中运行良好。

答案1

我将其发布为答案,以防对其他人有所帮助。
虽然它没有直接回答问题,但它得到了我想要的结果。

  1. 创建脚本的符号链接home
  2. 创建 Windows 快捷方式:C:\Windows\System32\wsl.exe sh ~/sleep.sh

相关内容