未设置WINEPREFIX环境变量时,wine报错路径/home/myusername/0_home_extension/temp/x的来源疑问
这问题确实挺挠头的——明明没手动设置过WINEPREFIX环境变量,怎么wine突然蹦出这么个陌生的路径?我来帮你梳理几个最可能的排查方向:
先还原下你遇到的场景:
当我调用
mimeopen --debug prg.exe时,它输出:
Opening "prg.exe" with A Wine application (application/x-ms-dos-executable)
wine: invalid directory "/home/myusername/0_home_extension/temp/x" in WINEPREFIX: not an absolute path
接下来逐个排查可能的来源:
mimeopen的MIME关联配置:你是通过
mimeopen触发的Wine启动,这个工具会读取系统或用户级的MIME关联配置。可以检查这些文件:- 用户目录下的
~/.config/mimeapps.list,看看有没有给application/x-ms-dos-executable关联的Wine启动命令里硬编码了WINEPREFIX参数 - 系统级的
/usr/share/applications/wine.desktop,查看Exec字段是否带了指定WINEPREFIX的参数
- 用户目录下的
Wine本地配置文件的残留:Wine会在用户目录生成默认配置,比如
~/.wine/system.reg或者旧版本的~/.wine/config,说不定之前某次操作(比如脚本、第三方工具)偷偷修改了这些文件,写入了这个奇怪的路径。可以用grep "/home/myusername/0_home_extension/temp/x" ~/.wine/*来快速搜索匹配内容。隐藏的环境变量或shell配置:虽然你觉得没设WINEPREFIX,但有可能是某个shell配置文件(比如
~/.bashrc、~/.profile、~/.zshrc)里的别名、函数,或者桌面环境的全局启动脚本间接设置了它。如果终端里env | grep WINEPREFIX没结果,可以试试用ps aux | grep wine查看实际启动Wine的完整命令,看有没有带WINEPREFIX=/home/...的参数。第三方Wine管理工具的残留:如果你用过PlayOnLinux、Lutris这类管理Wine前缀的工具,它们会自动创建和切换WINEPREFIX,可能某个残留的快捷方式、配置文件还指向这个废弃的路径。可以检查这类工具的配置目录,看看有没有相关的记录。
最后给个小测试方法:手动指定默认WINEPREFIX来启动,比如运行WINEPREFIX=~/.wine mimeopen prg.exe,如果不再报错,基本就能确认是默认前缀的配置被篡改了。
备注:内容来源于stack exchange,提问作者ardabro

