所以我有一個java類,它將單獨的命令通過運行時和進程對象放到shell中。我的問題是,我可以運行像這樣的命令:通過java運行Shell腳本
$ls /users/me/documents
,它會工作,但
$cd /users/me/documents
$ls
還列出了根。顯然,進程和運行時對象不會跟蹤它在哪裏。有什麼方法來捕獲終端對象,還是我必須手動跟蹤當前目錄?
所以我有一個java類,它將單獨的命令通過運行時和進程對象放到shell中。我的問題是,我可以運行像這樣的命令:通過java運行Shell腳本
$ls /users/me/documents
,它會工作,但
$cd /users/me/documents
$ls
還列出了根。顯然,進程和運行時對象不會跟蹤它在哪裏。有什麼方法來捕獲終端對象,還是我必須手動跟蹤當前目錄?
每個shell腳本都將重新開始。您需要將字符串的所有您的命令在一起:
cd /usr/me/documents && ls
cd /usr/me/documents; ls
如果CD是成功的(所以如果目錄是壞,LS將無法運行)的第一個變化將只運行ls。第二種變化將始終運行ls(因此,如果目錄不好,ls將運行在默認目錄中)。
您正在爲每個命令產生一個單獨的進程。將這些命令放入腳本並在一個進程中執行它
每個使用Runtime.exec的人都需要閱讀this。
好的,我只是跟蹤路徑和最後輸出或類似的東西。 謝謝 – 2009-12-29 02:50:01
如果命令本身使用'&&'和其他特殊的東西,這可能會導致問題。我認爲可能會更好地構建一個每行分開的shell腳本。儘管這會對簡單的東西起作用。 – paxdiablo 2009-12-29 02:52:31