gpt4 book ai didi

bash - 从 WSL 访问现有的 Windows 环境变量

转载 作者:行者123 更新时间:2023-11-29 09:27:16 33 4
gpt4 key购买 nike

我想通过 WSL bash 提示访问现有的 Windows 环境变量,例如 USERPROFILE。 Microsoft 提供了有关使用 WSLENV 的信息 here ,我已经尝试使用它:

我在常用的 Windows“环境变量”控制面板中添加了 WSLENV 作为一个新的系统变量,将其设置为 USERPROFILE/u。然后我从任务栏打开 Ubuntu,然后输入:

$ echo $USERPROFILE

...但没有返回任何内容。

最佳答案

改进了 Gábor 的回答,因为我发现它有一个小错误,以这种方式获得的变量包含不可见的回车符,这可能会导致以后出现意外问题。这是示例:

$ cd /mnt/c/
$ mkdir Windows_NT
$ tmpvar=`/mnt/c/Windows/System32/cmd.exe /C "echo %OS%"`
$ echo $tmpvar
Windows_NT

一切似乎都很好,但没有:

$ cd $tmpvar
: No such file or directory

这是因为 tmpvar 变量在末尾包含额外的回车符(又名 ^M\r)。我们可以通过 ls 命令检查:

$ ls -ld $tmpvar
ls: cannot access 'Windows_NT'$'\r': No such file or directory

为了删除该字符,可以使用 sedtr 额外处理输出:

tmpvar=$(cmd.exe /C echo %OS%|sed $'s/\r$//')

tmpvar=$(cmd.exe /C echo %OS%|tr -d '\r')

我还稍微简化了命令。在最近的 Windows 10 更新中,默认情况下路径/mnt/c/Windows/System32 已包含在 $PATH WSL 变量中,因此只需 cmd.exe 即可。

现在,lscd 命令可以正常工作:

$ ls -ld $tmpvar
drwxrwxrwx 1 ubuntu ubuntu 512 Feb 12 05:38 Windows_NT
$ cd $tmpvar
$ pwd
/mnt/c/Windows_NT

pwd 命令确认当前目录正确。

关于bash - 从 WSL 访问现有的 Windows 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48567325/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com