基于 Linux 和 Windows 用户名的 WSL2 动态文件路径

基于 Linux 和 Windows 用户名的 WSL2 动态文件路径

我创建了一个 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 的回答)。

相关内容