![我可以打开一个新终端并在其中执行新的二进制文件吗?](https://linux22.com/image/849961/%E6%88%91%E5%8F%AF%E4%BB%A5%E6%89%93%E5%BC%80%E4%B8%80%E4%B8%AA%E6%96%B0%E7%BB%88%E7%AB%AF%E5%B9%B6%E5%9C%A8%E5%85%B6%E4%B8%AD%E6%89%A7%E8%A1%8C%E6%96%B0%E7%9A%84%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6%E5%90%97%EF%BC%9F.png)
我尝试编写一个脚本来打开一个新的 xterminal 并在其中运行一些二进制文件(不是命令)。整个脚本如下所示:
#!/bin/bash
XTERM="/usr/bin/xterm -bg WHITE -e /home/ambuj/practice/myBinary"
exec $XTERM 2>&1 &
脚本终止而不执行任何操作。我正在使用 Ubuntu 12.04 LTS。
答案1
我尝试使用类似的脚本来运行脚本和可执行文件。它在两种情况下都有效。
可执行文件的情况
/usr/bin/xlogo
:#!/bin/bash XTERM="/usr/bin/xterm -bg RED -e /usr/bin/xlogo" exec $XTERM 2>&1 &
终端启动,因此它执行二进制文件
xlogo
;原始 shell 将提示符返回给我,因为脚本已完成其执行。没有返回任何错误。
(一切都很顺利,因为 xterm 启动了)。
如果我在焦点位于xterm 窗口我打断xterm 会话和可执行文件。如果我关闭可执行文件,xterm 会话也完成了。我使用以下脚本使其可执行
chmod u+x MyScript.sh
#!/bin/bash pwd # To confirm in which directory it works echo Please insert something read a # It asks to input something echo inserted $a We sleep for 10 seconds sleep 10 # It will wait 10 seconds to exit
它再次像二进制情况一样运行。
如果我尝试中断脚本,这将完成 xterm 会话也。
这清楚地表明xterm 会话从当前运行小路。
因此,如果您的文件是可执行文件,那么它是二进制文件还是脚本实际上并没有区别。
经典调试清单:
- 检查是否可以运行
/usr/bin/xterm
检查它是否可执行(在您的示例中
ls -l /home/ambuj/practice/myBinary
)。如果它是可执行文件,请尝试从当前位置(目录)运行它,以查看是否需要从特定位置执行小路如果它需要某个地方的某个文件,或者它是为您的架构编译的......
注意如果执行你的二进制文件(或脚本)完成你的终端会话将立即完成,无论是由于错误还是由于 自然原因。
永远不要忘记,更难发现的错误是不存在的错误:所以如果你的程序执行得很快,你会觉得你的终端将会打开和关闭而不执行任何操作。