2011-09-08 10 views
3

私はプロセスビルダーを実行していて、通常のシェルで動作するコマンドを実行できるように/ etc/profileをソースしようとしています。"source"コマンドを実行しようとしているプロセスビルダーを実行しています

String args[] = {"source", "/etc/profile"}; 
Process p = new ProcessBuilder(args).start(); 
InputStream is = p.getInputStream(); 
InputStreamReader isr = new InputStreamReader(is); 
BufferedReader br = new BufferedReader(isr); 

は、残念ながら、それが返されます。

java.io.IOException: Cannot run program "source": java.io.IOException: error=2, No such file or directory 

すべてのヘルプは大歓迎します!

+3

私は 'source'コマンドはシェルに組み込まれていると考えているので、あなたは、Javaから直接それを実行することはできません。 'source'ではなく' bash'を実行すると、そのトリックを行うかもしれません。 –

+0

@Wesleyはい 'bash -c 'source/etc/profile''がこのトリックを行います。しかし、環境へのすべての変更は、bashプロセスが終了すると失われます。とにかくあなたのプロセスはそれらを見ないでしょう。 –

+0

標準シェル環境をプロセスに導入する方法はありますか? – Joris

答えて

0

bashは起動時に環境変数BASH_ENVをサポートします。変数をスクリプトに設定すると、その内容は実行前にソースになります。詳細は、bash(1)を参照してください。

(別の質問を通じて答えを得ることができた - Setting a java ProcessBuilder environment with a bash script

関連する問題