簡體   English   中英

如何在bash中設置JAVA_HOME?

[英]how do i set JAVA_HOME in bash?

我的主機系統是Windows 7

我想讓它在CYGWIN中工作。

我需要將一個名為JAVA_HOME的環境變量設置c/program files (x86)/java/jre7

這是我嘗試過的:

$myjava=cat c/program\ files\ \(x86\)/java/jre7
export JAVA_HOME=myjava

但我得到:

第9行:c /程序文件(x86)/ java / jre7:沒有這樣的文件或目錄錯誤:未設置JAVA_HOME。

我究竟做錯了什么?

export JAVA_HOME=c:/program\ files\ \(x86\)/java/jre7

兩個錯誤:首先,您嘗試使用一個設置為一次性的變量執行“ c/program files (x86)/java/jre7 ”,其次,看起來您正在使用bourne-shell語義:首先,您必須設置變量,然后可以將其導出。

$myjava=cat c/program\\ files\\ (x86)/java/jre7 . 這就是為什么您得到“ c /程序文件(x86)/ java / jre7:沒有這樣的文件或目錄”的原因。

. 在bash中, export JAVA_HOME=myjava這一行表示要 錯誤消息“錯誤:未設置JAVA_HOME。” 要么意味着您需要將其分解(不使用bash?),因為JAVA_HOME=$myjava; export JAVA_HOME , and if you fix the first line, it'll all get better. JAVA_HOME=$myjava; export JAVA_HOME ,或者這意味着未將JAVA_HOME設置 ,如果您修復了第一行,一切都會變得更好。

@BMargulies Answer提供了一個解決方案。 但是我認為了解您做錯了事的原因很重要……以便下次您可以(至少)更好地解決問題。

查看您的第一個命令行...

$myjava=cat c/program\ files\ \(x86\)/java/jre7

這有很多問題。 首先,用於設置shell變量的語法為:

<name>=<word>

因此,您在第一行中實際要做的是:

  1. 它將一個名稱未知的變量設置為字符串“ cat”:

    • 變量名是未知的,因為它取決於“ myjava”變量的先驗值。 (話語“ $ myjava”說“在這里插值'myjava'變量的值”。)
    • 將變量設置為“ cat”的原因是“ cat”是“ =“之后的第一個單詞。
  2. 然后,它嘗試作為命令運行該行的其余部分(即“ c / program \\ files \\(x86)/ java / jre7”)。 但這不是命令:它是目錄。 這就是您看到的“未找到”錯誤消息的最可能來源。

最重要的是,您似乎正在嘗試使用“ cat”命令進行操作。 “ cat”命令(以這種形式)讀取文件的內容並將其寫入標准輸出。

  1. 您沒有檔案。 您正在查看目錄。
  2. 您不在乎目錄的內容。 (這不是您訪問它的方式...)
  3. 您不是在看標准輸出。

簡而言之,“ cat”在這里完全沒有必要。 您只需要目錄的路徑名 因此,第一行的正確格式為:

 myjava=c/program\ files\ \(x86\)/java/jre7

或使用引號:

 myjava="c/program files (x86)/java/jre7"

要么

 myjava='c/program files (x86)/java/jre7'

三種報價都具有相同的作用。 它們導致將“ =”之后的內容解析為單個<word> (三種引用樣式在行為上有所不同,但在這里並不重要。)

第二行實際上接近需要的行。 你寫了:

 export JAVA_HOME=myjava

意味着將JAVA_HOME設置為文字字符串“ myjava” ...並將其導出。 但是您想使用名為“ myjava”的shell變量的值。 那是:

 export JAVA_HOME=$myjava

“ $ myjava”說“對變量'myjava'的值進行插值” ...參見上文。


@BMargulies答案將兩行合並為on,並刪除了(不必要的)局部變量“ myjava”。 我也是那樣做的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM