如何查看通过.desktop自定义应用启动器启动的脚本的终端输出
如何查看通过.desktop自定义应用启动器启动的脚本的终端输出
我来帮你梳理下问题的核心,以及对应的解决办法:
首先,你遇到的情况很典型:ls.sh在终端里能正常输出,但通过GNOME启动器启动时看不到内容,而带whiptail的脚本却能正常运行。这差异的根源在于终端的生命周期:
- 你的
ls.sh执行ls命令是瞬间完成的,GNOME启动的终端在脚本执行结束后会立刻关闭,导致你根本来不及看到输出; - 而
ls-whiptail.sh里有whiptail的交互式弹窗,会让终端保持打开状态,直到你操作完弹窗,所以能正常运行。
下面给你几个实用的解决思路,任选其一都能解决问题:
方法1:修改脚本,让终端执行完后保持打开
在ls.sh的末尾添加一行让终端等待输入的命令,这样脚本执行完后不会立刻关闭,你就能看到ls的输出了:
#!/bin/bash -x ls read -p "查看完输出后按回车键关闭终端..."
方法2:修改.desktop文件的Exec命令,强制终端保持打开
直接修改ls.desktop里的Exec行,让终端启动后执行你的脚本,并且在脚本结束后保持终端会话:
[Desktop Entry] Encoding=UTF-8 Name=ls.sh # 这里要注意脚本的路径,如果ls.sh不在系统PATH里,最好用绝对路径,比如/home/你的用户名/ls.sh Exec=gnome-terminal -- bash -c "ls.sh; exec bash" Terminal=true Type=Application Categories=Programming;
如果你的ls.sh没有放在系统默认的PATH目录(比如~/bin)里,一定要用绝对路径指定脚本位置,否则GNOME启动器可能找不到你的脚本。
方法3:把脚本输出重定向到日志文件
如果你不需要实时看终端输出,只是想记录结果,可以在脚本里把输出重定向到日志文件,之后随时查看:
#!/bin/bash -x ls > ~/ls_script_output.log 2>&1
这样ls的标准输出和错误都会被保存到用户主目录下的ls_script_output.log文件里,你可以用cat ~/ls_script_output.log查看内容。
另外补充一点:你之前的ls.desktop里用Exec=ls.sh,如果你的ls.sh没有放在系统PATH包含的目录里,其实GNOME启动器可能根本找不到它——只是因为终端一闪而过你没看到错误提示。所以最好把自定义脚本放到~/bin目录(如果没有就创建一个),或者在Exec里用绝对路径,这样更稳妥。
备注:内容来源于stack exchange,提问作者jophuh
相关产品推荐
相关产品推荐

