unix 使用shell脚本(bash)在单独的终端中运行命令

jtw3ybtb  于 10个月前  发布在  Unix
关注(0)|答案(2)|浏览(121)

我想启动几个应用程序使用“./application_name”和每个在单独的终端,我怎么做,在bash脚本。

j7dteeu8

j7dteeu81#

我不确定我是否理解你的要求,但这可能是你需要的:

x-terminal-emulator -e "./application_name [arguments]" &

字符串
这将在后台启动一个新的终端模拟器,它将运行给定的命令而不是shell。
如果您的系统没有x-terminal-emulator别名,请替换实际终端模拟器的名称,如xtermgnome-terminal。它们(几乎)都支持-e选项。
当然,这首先需要你的bash脚本从X11会话内部运行(而不是从cron作业或类似的东西),否则就不会有$DISPLAY出现新的终端模拟器。

EDIT-e的参数是在shell下执行还是直接执行,似乎取决于使用的是哪个终端模拟器。例如,xterm在shell下运行它,但gnome-terminal没有。这样做的结果是,您可能会也可能不会提供像cd foobar; ./something & wait这样的复合shell命令作为-e的参数。对于那些不在shell下运行命令的终端模拟器来说,可以使用-e 'sh -c "actual command"'。特殊字符的正确引用将得到gets complicated,因为您有两个引用级别,但这是可以做到的。

j9per5c4

j9per5c42#

尝试指定命令的完整路径。有两种方法取决于你想做什么。
terminal -e“cd ~/dir ;./application”;睡眠999 ;“
==或==
terminal -e“~/dir/application ;睡眠999 ;“
第一个将在执行命令之前设置当前目录。第二个将执行命令而不更改当前目录。必须用所需的终端模拟器替换“终端”。
例如:xterm -e“~/bin/MyScript.sh; sleep 999 ;“
其他变化也是示例性变化。检查终端模拟器的手册页,确保-e可以使用它,或者需要什么来完成-e的工作(我自己不使用xterm)。999是999秒。sleep命令设置为在www.example.com执行完毕后保持终端窗口打开999秒MyScript.sh。
缺少&,因此终端将在前台运行,而不是后台。只要这是唯一执行的命令,尾随的;也不需要。在脚本中,尾部;如果您希望与此命令同时运行其他命令,也可以省略。如果命令必须以特定顺序运行,使得一个命令在下一个命令运行之前完成,则尾部;是必需的。在后台运行的命令还允许其他命令同时运行。尾随;在命令行提示符中输入命令时,不需要。它确实有助于有一个空间的两侧a ;命令之间(即:命令;命令)。在给出的示例中,当命令运行时,终端应该保持打开状态。

相关问题