2011-06-02 70 views
12

我想從bash shell運行一個程序。當程序運行時,它支配整個shell,所以我想啓動一個新的shell並從那裏運行程序。目前我在做:從bash shell啓動一個新的bash shell

gnome-terminal -x "cd Dropbox; program_name" 

但是,給我的錯誤無法執行子進程,沒有這樣的文件或目錄。我相信那是因爲新終端沒有時間進行初始化。我怎樣才能解決這個問題?

+0

,使程序在後臺運行,可以使用與&命令。所以$ ProgramThatTakesALongTime& ...但是,不會顯示你從該程序輸出... – Nate 2011-06-02 18:31:57

+1

@Nate是的,你可以看到程序在後臺運行的輸出。嘗試'eval'睡眠3;回聲「你好」'&' – 2013-02-08 16:53:48

回答

8

我承認這並不真正回答你的問題,但我認爲它解決了你的問題。

爲什麼不只是使用&發送到後臺。你可以看到,如果它仍與jobs運行並與fg將其帶回前臺,您還可以發送回的背景下,通過先用按Ctrl + ž然後bg

實例停止它嘗試。

> sleep 20 & 
> jobs 
> fg [jobNumber] 
[Ctrl-Z] 
> jobs 
> bg [jobNumber] 
> jobs 
1

在調用gnome-terminal之前使用程序或cd的絕對路徑。你需要一個&把它放在後臺。

cd Dropbox; gnome-terminal -x "program_name" & 
0

嘗試增加「&」你的命令的末尾,例如:

gnome-terminal & 

我不知道,如果它的工作與GNOME終端,但它與mrxvt運作良好。

1

嘗試screen。它是一個簡單的brogram,允許您同時跟蹤多個shell。您可以瀏覽每個打開的shell,甚至可以離開會話並稍後重新連接。

0
/bin/bash -c "/path/to/prog" 

但也看看sleep命令也。

8

嘗試:

bash -c 'gnome-terminal -x cd /absolute-path && program_name'