我想从bash shell中运行一个程序。当程序运行时,它会占用整个shell,因此我想启动一个新的shell并从那里运行程序。目前我的做法是:
gnome-terminal -x "cd Dropbox; program_name"
但是这会给我报错:无法执行子进程,文件或目录不存在。我认为这是因为新终端没有时间进行初始化。我该如何解决?
尝试:
bash -c 'gnome-terminal -x cd /absolute-path && program_name'
&
将其发送到后台。您可以使用jobs
查看它是否仍在运行,并使用fg
将其带回前台,您还可以通过首先使用Ctrl+Z停止它,然后使用bg
将其发送回后台。> sleep 20 &
> jobs
> fg [jobNumber]
[Ctrl-Z]
> jobs
> bg [jobNumber]
> jobs
/bin/bash -c "/path/to/prog"
但也要了解一下sleep
命令。
在调用gnome-terminal之前,请使用程序的绝对路径或cd命令。并且你需要一个&符号将其放到后台运行。
cd Dropbox; gnome-terminal -x "program_name" &
gnome-terminal &
我不知道它是否与gnome-terminal兼容,但它在mrxvt上运行良好。
eval 'sleep 3; echo "hello"' &
。 - Sébastien