web-dev-qa-db-ja.com

[Windows上のUbuntuでのBash] [環境変数]を[windows path]から設定する方法は?

samza.Apache.org/startup/hello-samza/0.7.0/ をWindowsの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にインポートしたい

enter image description here

5

export Java_HOME="/mnt/c/Program Files (x86)/Java/jdk1.8.0_102"を試して、bashシェルでJava_HOME変数を設定します。

更新(編集への応答):

Windows上のUbuntuでBashにWindowsパスを自動的にインポートすることはお勧めしません。パスを変換してbashシェル(\から/C:\からmnt/c/など)に認識させる必要があるためです。おそらく参照するツールの一部は、WindowsとLinuxの両方で動作します。代わりに、 apt-get を使用して必要なものをBashシェルにインストールします(BUWはルートシェルにロードされるため、Sudoを使用する必要はありません)。 Javaはおそらく上記のように参照しても問題ありませんが、Ubuntuに個別にインストールしたいものはほとんどあります。

7

簡単な解決策として、次のようなPowerShellスクリプトを作成しました

  1. すべてのWindows環境変数を取得する
  2. パス区切り文字を/に変更します
  3. C:/mnt/cに変更します
  4. 出力exportコマンドは環境変数ごとに1行

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

これで、Powershellでこのスクリプトを実行し、出力をコピーしてWindowsのWSL/Ubuntuに貼り付けて、環境変数を設定するだけです。これらのコマンドをすべて.shファイルに入れて、bashを使用して実行することもできます。

それは粗雑な解決策ですが、これは私にとってはうまくいきました。これを改善するための提案を受け付けています。

1
raghav710

私のパス環境変数には既にWindowsパスがあります。ただし、Windows上のUbuntuからWindowsプログラムを実行できます。そのため、環境変数など、好きなものを取得できます。

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

Cygwin(ライセンス、レジストリ破損など)の使用は推奨されません。しかし、以下が動作するはずです。 runは、提供されるbashシェルからWindowsプログラムを実行するように文書化されています。

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