我在 Windows 10 上將 WSL2 與 Ubuntu 20.04 一起使用。我有一個在啟動時未自動連接到 WSL2 的磁盤。Windows上注冊磁盤的字母可以更改,我只知道卷的名稱。我撰寫了一個 bash 腳本來查找磁盤號,然后將其掛載到 WSL2
#!/bin/bash
BACKUP_FOLDER=/mnt/autobackup
mkdir -p $BACKUP_FOLDER
VOLUME_LETTER="$(powershell.exe -Command '(Get-Volume -FriendlyName AUTOBACKUP | Select-Object -Index 0).DriveLetter' | awk -v RS='\r\n' '{ print $0 }')"
VOLUME_LETTER=$(echo "${VOLUME_LETTER}:\\")
sudo mount -t drvfs $(echo $VOLUME_LETTER) $(echo $BACKUP_FOLDER)
當我以普通用戶身份運行該腳本并詢問我的密碼時,該腳本作業正常。但是,嘗試以 root 身份運行它時會引發錯誤(這是我想要的,因為我想將腳本放入/etc/init.d以在啟動時運行)
./wsl_startup.sh: line 5: powershell.exe: command not found
mount: /mnt/autobackup: special device :\ does not exist.
<3>init: (1058) ERROR: UtilCreateProcessAndWait:501: /bin/mount failed with status 0x2000
<3>init: (1058) ERROR: MountPlan9:493: mount cache=mmap,rw,trans=fd,rfdno=3,wfdno=3,msize=65536,aname=drvfs;path=:\;symlinkroot=/mnt/ failed 2
No such file or directory
如何讓root看到powershell.exe命令?或者我應該以其他方式做嗎?
uj5u.com熱心網友回復:
當運行 as 時root,$PATH僅包含一組最小條目,不包括 Windows 檔案系統目錄,例如 where 所在的目錄powershell.exe。
因此,您必須powershell.exe通過其完整路徑呼叫:
VOLUME_LETTER="$(/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/powershell.exe -Command '(Get-Volume -FriendlyName AUTOBACKUP | Select-Object -Index 0).DriveLetter' | awk -v RS='\r\n' '{ print $0 }')"
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/482801.html
