我创建了一个 bash 脚本,并希望为 WSL2 的 Windows 和 Linux 部分提供动态文件路径。
#!/bin/bash
# Create the workspace
mkdir /mnt/c/Users/FINIX/Documents/Workspace/test/
# Go to the workspace
cd /mnt/c/Users/FINIX/Documents/Workspace/test/
# Create the temp file to store the branches
touch /home/finix/test.txt
# Clone the repo
git clone https://github.com/test/test.git
# Going to the downloaded repo
cd /mnt/c/Users/FINIX/Documents/Workspace/test/TEST/
我想动态地将用户名 finix 更改为来自 WSL2 的 Linux 端和 Windows 端的机器的任何用户名。
答案1
可能有更好的方法,但这是我想到的:
要从 bash 中检索 Windows 用户名:
winuser=$(powershell.exe -c "Write-Host -NoNewLine ([Environment]::UserName)")
然后您应该能够使用它来动态创建目录,如下所示:
mkdir /mnt/c/Users/${winuser}/Documents/Workspace/test/
Linux 用户要容易得多。正如@terdon 所暗示的那样,这个可以很简单:
touch ${HOME}/test.txt
或者,或者,touch /home/${USER}/test.txt
.
当然,Windows端假设Windows home始终是/mnt/C/Users/
username
如果它在其他地方,那么您需要 PowerShell 咒语来获取用户的 Windows 主目录。那将是:
winhome==$(powershell.exe -c 'Write-Host -NoNewLine $env:userprofile' | xargs -0 wslpath)
(感谢@Panki 的回答)。