Windows Subsystem for Linux not recognizing JAVA_HOME Environmental Variable

后端 未结 3 2125
一生所求
一生所求 2021-02-07 11:21

I\'m trying to get WSL to recognize my windows installed environmental variable of JAVA_HOME. I attached of what I have in my bashrc and what I have in my windows environmental

3条回答
  •  臣服心动
    2021-02-07 11:47

    Since I've never been able to share variables between the 2 systems easily, I creayed a simple bash function which can easily retrieve (and define, if asked to) any Windows Environment variable. It also takes care of paths so they get converted from Win32 to Un*x-line.

    I added this to /etc/bash.bashrc:

    winenv()
    {
      if [ "$#" == "0" ] || [ "$1" == "--help" ]
      then
        echo $'\n'Usage:
        echo $'\t'winenv [-d] WINDOWS_ENVIRONEMENT_VARIABLE_NAME
        echo $'\t'-d: Defines environment variable in current shell
        echo $'\t    Note that paths will be translated into un*x-like paths\n'
        return
      fi
      local IFS='$\n'
      local PATH_TO_TRANSLATE=$1
      [ "$1" == "-d" ] && PATH_TO_TRANSLATE=$2
      local VAR=$(cmd.exe /c echo %${PATH_TO_TRANSLATE}% | tr -d '\r')
      local NEW=$(wslpath -u "${VAR}" 2>/dev/null || echo ${VAR})
      echo "${PATH_TO_TRANSLATE} = ${VAR} -> ${NEW}"
      [ "$1" == "-d" ] && export "${PATH_TO_TRANSLATE}=${NEW}"
    }
    

    And all I have to do to display one is to call winenv PROGRAMFILES (for example)
    Or if I expect to export it, I just have to add a -d argument before the variable name as in winenv -d WINDIR.

提交回复
热议问题