简体   繁体   中英

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

Try to use samza.apache.org/startup/hello-samza/0.7.0/ with Bash On Windows

it will run

bin/grid bootstrap

where the flowing code

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

give an error

JAVA_HOME not set. Exiting.

on CMD when i run

echo %JAVA_HOME%

i got

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

I want to import the path data to bash

在此处输入图像描述

I would try export JAVA_HOME="/mnt/c/Program Files (x86)/Java/jdk1.8.0_102" to set the JAVA_HOME variable in the bash shell.

Update (response to your edit):

I wouldn't recommend trying to automatically import your Windows paths to Bash on Ubuntu on Windows, because the paths have to be converted to be understood by the bash shell ( \\ to / , C:\\ to mnt/c/ and so on), and because not all of the tools you're probably going to reference will work on both Windows and Linux. Instead, install what you need on the Bash shell using apt-get (you don't need to use sudo because BUW loads in a root shell). Java is probably fine to reference as above, but most things you'll want installed separately on Ubuntu.

As a quick solution, I created a powershell script that would

  1. Take all windows environment variables
  2. Change the path separator to /
  3. Change C: to /mnt/c
  4. Output export commands one line per environment variable

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

Now, all you need to do is run this script in Powershell, copy the output and paste it in WSL/Ubuntu on Windows to populate the environment variables. You could also put all these commands in a .sh file and execute it using bash.

It is a crude solution, but this worked for me. I'm open to suggestions on improving this.

My path environment variable seems to already have my windows paths there. But you can run windows programs from Ubuntu on Windows. So you can get environment variables or whatever you like.

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

It isn't recommended to use Cygwin (licensing, registry corruption, etc). But below should work. run is documented to run windows programs from the bash shell it gives you.

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

This one is working for me, by setting WSLENV in the System variables environment.

System variables

export [variable-name]='any-path' for current shell session

eg

export VSCode='C:/Program Files/....'
echo $VSCODE

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM