如何在desktop-entry中正确重定向命令输出生成日志文件
问题原因
Linux桌面条目(.desktop文件)的Exec字段默认不会通过Shell解析命令,因此>这类Shell重定向符会被直接识别为传递给prg.exe的普通参数,不会触发重定向逻辑;另外相对路径的使用也可能导致日志文件被生成到系统默认的工作目录(而非程序所在目录),无法找到。
修复方案
方案1:直接在Exec字段中调用Shell执行命令
直接修改.desktop文件的Exec行,通过bash/sh包裹完整命令,同时建议填写所有文件的绝对路径避免路径错误:
[Desktop Entry] Name=My prg Comment=some comment Icon=/usr/share/pixmaps/openbox.xpm # 替换为你实际的文件路径,2>&1可以同时将错误输出写入日志 Exec=bash -c "mono --debug /home/yourname/app/prg.exe arg1 > /home/yourname/app/log.txt 2>&1" Type=Application Encoding=UTF-8 Terminal=false Categories=None;
方案2:通过独立Shell脚本启动
如果命令逻辑比较复杂,可以单独写一个启动脚本,再让桌面条目调用脚本:
- 在prg.exe所在目录新建
run_prg.sh,写入以下内容:
#!/bin/bash # 先切换到程序所在目录,保证相对路径生效 cd "$(dirname "$0")" mono --debug prg.exe arg1 > log.txt 2>&1
- 给脚本添加执行权限:
chmod +x /path/to/run_prg.sh - 修改.desktop的Exec字段指向脚本:
Exec=/path/to/run_prg.sh
注意事项
- 所有路径优先使用绝对路径,避免工作目录不匹配导致的文件找不到问题
- 添加
2>&1可以将程序运行的错误输出也写入日志文件,和终端直接执行的输出效果一致
内容的提问来源于stack exchange,提问作者Viorel
相关产品推荐
相关产品推荐

