如何设置 [Bash on Ubuntu on Windows] [environment variables] from [windows path]?

How to set [Bash on Ubuntu on Windows] [environment variables] from [windows path]?

尝试在 Windows

上将 samza.apache.org/startup/hello-samza/0.7.0/ 与 Bash 一起使用

会运行

bin/grid bootstrap

哪里有流动的代码

if [ -z "$JAVA_HOME" ]; then
  if [ -x /usr/libexec/java_home ]; then
    export JAVA_HOME="$(/usr/libexec/java_home)"
  else
    echo "JAVA_HOME not set. Exiting."
    exit 1
  fi
fi

报错

JAVA_HOME not set. Exiting.

当我 运行

时在 CMD 上
echo %JAVA_HOME%

我得到了

C:\Program Files (x86)\Java\jdk1.8.0_102\

我要导入路径数据到bash

我会尝试 export JAVA_HOME="/mnt/c/Program Files (x86)/Java/jdk1.8.0_102" 在 bash shell 中设置 JAVA_HOME 变量。

更新(对您的编辑的回应):

我不建议尝试将 Windows 路径自动导入到 Windows 上的 Ubuntu 上的 Bash,因为必须转换路径才能理解通过 bash shell(\/C:\mnt/c/ 等等),因为并不是所有的工具你可能要参考的内容适用于 Windows 和 Linux。相反,使用 apt-get 在 Bash shell 上安装你需要的东西(你不需要使用 sudo 因为 BUW 在根 shell 中加载)。 Java 可能可以像上面那样引用,但大多数东西你会想要单独安装在 Ubuntu.

作为快速解决方案,我创建了一个 powershell 脚本,可以

  1. 取所有windows个环境变量
  2. 将路径分隔符更改为/
  3. C:更改为/mnt/c
  4. Output export 命令每个环境变量一行

    Get-ChildItem Env: | % {"export $($_.Name)=`"$($_.Value.Replace('\', '/').Replace('C:', '/mnt/c'))`""}
    

现在,您需要做的就是在 Powershell 中 运行 此脚本,复制输出并将其粘贴到 WSL/Ubuntu 上 Windows 以填充环境变量。您还可以将所有这些命令放在 .sh 文件中,然后使用 bash.

执行它

这是一个粗略的解决方案,但这对我有用。我乐于接受有关改进的建议。

我的路径环境变量似乎已经有了我的 windows 路径。但是您可以 运行 windows 来自 Ubuntu 的 Windows 节目。所以你可以获得环境变量或任何你喜欢的东西。

export PATH=$PATH:`/mnt/c/Windows/System32/cmd.exe -/C "echo %PATH%"`

不建议使用 Cygwin(许可、注册表损坏等)。但下面应该工作。 运行 被记录到 运行 windows 程序,来自 bash shell 它给你。

export PATH=$PATH:`run /mnt/c/Windows/System32/cmd.exe -/C "echo %PATH%"`

这个对我有用,通过在系统变量环境中设置 WSLENV

系统变量