银河麒麟系统下.sh脚本双击启动失败的原因分析与解决方案

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 检查文件权限

虽然不常见,但也要确认脚本有可执行权限:

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值