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 -c、、、wsl.exeおよびスクリプトを起動しようとしましたdebian.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

ベストアンサー1

他の人に役立つかと答えて投稿しています。
質問に直接答えることはありませんが、目的の結果を得ます。

  1. スクリプトへのシンボリックリンクの作成home
  2. Windowsショートカットを作成します。C:\Windows\System32\wsl.exe sh ~/sleep.sh

おすすめ記事