如何在[Windows路径]中设置[在Windows上使用Ubuntu进行Bash] [环境变量]?

时间:2017-07-15 03:20:12

标签: bash ubuntu command-line windows-10 windows-subsystem-for-linux

尝试在Windows上使用Bash <{p>}使用samza.apache.org/startup/hello-samza/0.7.0/

它会运行

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

enter image description here

4 个答案:

答案 0 :(得分:5)

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

更新(回复您的修改):

我不建议尝试在Windows上的Ubuntu上自动将Windows路径导入Bash,因为必须将路径转换为bash shell(\/,{ {1}}到C:\等等,因为并非所有可能引用的工具都适用于Windows和Linux。相反,使用apt-get在Bash shell上安装所需的内容(您不需要使用mnt/c/,因为BUW会在根shell中加载)。如上所述,Java可能很好引用,但大多数事情都需要在Ubuntu上单独安装。

答案 1 :(得分:1)

作为快速解决方案,我创建了一个Powershell脚本,该脚本将

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

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

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

这是一个粗略的解决方案,但这对我有用。我愿意提出改进建议。

答案 2 :(得分:1)

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

系统变量

答案 3 :(得分:0)

我的路径环境变量似乎已经有我的Windows路径。但是您可以在Windows上从Ubuntu运行Windows程序。这样您就可以获取环境变量或任何您喜欢的变量。

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

不建议使用Cygwin(许可,注册表损坏等)。但是下面应该工作。记录运行可以从它为您提供的bash shell运行Windows程序。

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