由于使用 OpenFoam,将环境变量传输到 WSL 时空格被替换为冒号

由于使用 OpenFoam,将环境变量传输到 WSL 时空格被替换为冒号

我使用的是 windows-subsystem-for-Linux,我选择的是 Ubuntu。但是我无法调用安装在 Windows 操作系统上的程序,所以我检查了 WSL 中的环境变量列表,似乎在将环境变量传输到 WSL 时空格被替换为冒号。
考虑到在 WSL 中,环境变量列表是一个冒号分隔的列表。在 Win32 中,它是一个分号分隔的列表。
我想这就是我无法调用安装在 Windows 操作系统上的程序的原因。所以我检查了另一台笔记本电脑,这种现象不存在,一切正常。

我的问题是:

  1. 为什么会出现这个问题?
  2. 我该如何修复它?

在此处输入图片描述

在此处输入图片描述

答案1

我认为你这里遇到了几个问题。

  1. 从 WSL Linux Shell 执行 Windows 二进制程序。您正在执行 Windows,那么为什么不从 Windows CMD、.BAT 文件或 Powershell 运行您的程序呢?

无论如何,请确保您已在 /etc/wsl.conf 中启用此功能

[interop]
enabled=True

请注意:此选项在 Insider Build 17713 及更高版本中可用。

  1. 为什么路径会出现问题,将空格转换为 : ?我不知道。在 Linux 中,路径中的空格表示为:
\ 

(引号内为横线和空格,如果不使用引号则为空格)

因此,我认为您需要用以下方法替换您的 PATH: d/ProgramFiles/VS_Code/Microsoft:VS:Code/bin 经过: d/ProgramFiles/VS_Code/Microsoft\VS\Code/bin

请检查:/etc/wsl.conf

你应该有:

[interop]
appendWindowsPath=True

请检查选项[自动挂载]部分。 https://docs.microsoft.com/en-us/windows/wsl/wsl-config#configure-per-distro-launch-settings-with-wslconf

如果你每次都需要修补你的 PATH,你可以执行类似 fixpath.sh 的脚本:

#!/usr/bin/env bash
PATH=$(echo "$PATH" | sed "s/Microsoft:VS:Code/Microsoft\ VS\ Code/")
export PATH

然后运行:

source ./fixpath.sh

干杯

答案2

我发现这是因为我使用了OpenFoam,当OpenFoam的PATH环境生效时,它会重建PATH环境变量,在~/.bashrc文件中相应的设置为:
source /opt/openfoam8/etc/bashrc

如以下屏幕截图所示,OpenFoam 将重建 $PATH 环境变量,以冒号和空格作为分隔符。 在此处输入图片描述

相关内容