2016-10-21 4 views
0

"echo $ Path"コマンドを含むbachスクリプトを実行すると、javaで実行されたときに出力される内容と、コマンド行から実行するときに出力される内容が異なります。私のスクリプトの他のコマンドにも影響します。なぜこれが起こっているのですか、どうすれば避けられますか?続き

は、スクリプトがbashscriptに "エコーの$ PATH" が含まれているとき、私はコマンドライン出力から実行したときに

出力は

/usr/bin:/bin:/usr/sbin:/sbin 

である。しかしbashscript

public static String executeCommands(File tempScript, Boolean deleteFile) 
     throws IOException, InterruptedException { 

    StringBuffer output = new StringBuffer(); 

    try { 
     ProcessBuilder pb = new ProcessBuilder("bash", tempScript.toString()); 
     pb.inheritIO(); 
     Process process = pb.start(); 
     process.waitFor(); 


     BufferedReader reader = 
       new BufferedReader(new InputStreamReader(process.getInputStream())); 

     String line = ""; 
     while ((line = reader.readLine()) != null) { 
      output.append(line + "\n"); 
     } 
     return line; 

    } finally { 
     if (deleteFile == true) 
      tempScript.delete(); 
    } 
} 

を実行するために私の関数でありますis

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/scala/scala-2.11.8/bin:/Users/<user>/Installations/activator-dist-1.3.10 
+1

'-l'で' bash'を呼び出します。 –

+0

それは彼らが働くことになっている方法です。期待されることです。また、ルートとして実行を停止する、それに落ちる悪い習慣です。 – sorontar

+0

私はこのテストを単体テストから実行していました。私は単体テストから単体テストを実行しました。なぜそれが根の下で動いていたと思いますか? – raju

答えて

2

端末からコマンドを実行すると、.bashrcファイルから環境変数が読み込まれますが、eclipseは環境変数.bashrcを読み取っていないようです。アウト$PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games 

3.eclipse wiを持つ

1.terminal

[email protected]:~$ javac SS47.java 
[email protected]:~$ java SS47 
/home/user/perl5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/user/apache-maven-3.3.3/bin:/home/user/apache-maven-3.3.3/bin:/opt/jdk/jdk1.8.0_60/bin:/opt/jdk/jdk1.8.0_60/jre/bin:/home/user/dsc-cassandra-2.1.6/bin:/home/user/hadoop-2.6.0/bin:/home/user/hadoop-2.6.0/sbin:/home/user/android/android-studio/bin:/home/user/android/android-sdk-linux/platform-tools:/home/user/elasticsearch-2.3.5/bin:/home/user/scala-2.11.8/bin::/home/user/apache-maven-3.3.3/bin 

2.eclipseからbashrc

PATH変数から読み取るする./eclipse -DPATH=$PATH

打ち上げ日食thパス./eclipse -DPATH=$PATH

/home/user/perl5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/user/apache-maven-3.3.3/bin:/home/user/apache-maven-3.3.3/bin:/opt/jdk/jdk1.8.0_60/bin:/opt/jdk/jdk1.8.0_60/jre/bin:/home/user/dsc-cassandra-2.1.6/bin:/home/user/hadoop-2.6.0/bin:/home/user/hadoop-2.6.0/sbin:/home/user/android/android-studio/bin:/home/user/android/android-sdk-linux/platform-tools:/home/user/elasticsearch-2.3.5/bin:/home/user/scala-2.11.8/bin::/home/user/apache-maven-3.3.3/bin 
+0

私は通常Macのアプリケーションフォルダからeclipseを実行します。 Bashrcから読み込むためにEclipse内で変更できる設定はありますか? – raju

+0

端末 './eclipse -DPATH = $ PATH'からの起動を試してください。' Ubuntu' – Saravana

+0

を使用していますか、 '/ etc/environment'ファイルがあるかどうかを確認します。eclipseは環境変数に' $ PATH'を追加します。ファイルの場合は、 – Saravana

関連する問題