1. 为什么银河麒麟双击.sh脚本会启动失败?
第一次在银河麒麟系统上双击运行.sh脚本时,发现程序死活启动不了,这可能是很多新手都会遇到的坑。我自己在迁移Qt项目到银河麒麟V10时就踩过这个雷,明明在Ubuntu上运行得好好的脚本,怎么换了个系统就不灵了?
问题的根源其实在于银河麒麟使用的peony文件管理器和常见的caja管理器行为差异。在传统Linux系统中,双击.sh脚本时,文件管理器会把脚本所在目录作为工作目录。但在银河麒麟V10上,peony管理器会把用户主目录(比如/home/yourname)作为工作目录。这就导致脚本里用相对路径引用的资源文件全部找不到,程序自然无法启动。
举个例子,假设你的脚本里有一行./app来启动同级目录下的程序,在Ubuntu下能正常运行,但在银河麒麟下就会报"找不到文件"的错误。我当初调试时在脚本里加了句pwd命令输出当前目录,才发现这个隐藏的差异。
2. 三种快速验证问题的方法
遇到.sh脚本双击无法启动时,建议先用这几个方法快速定位问题:
2.1 终端直接运行测试
打开终端,cd到脚本所在目录,直接执行:
./your_script.sh
如果这样能正常运行,但双击不行,基本可以确定是工作目录的问题。
2.2 在脚本中添加调试信息
临时修改脚本,在开头加入:
#!/bin/sh
echo "当前工作目录:$(pwd)" > debug.log
echo "脚本所在目录:$(dirname "$(readlink -f "$0")")" >> debug.log
运行后查看生成的debug.log文件,对比两个路径是否一致。
2.3 检查文件权限
虽然不常见,但也要确认脚本有可执行权限:
<

2万+

被折叠的 条评论
为什么被折叠?



