双击.sh脚本无响应是因peony文件管理器自v10 sp1起拦截.sh执行,且桌面环境不加载path和工作目录;必须通过终端执行:先chmod +x赋权,再./运行(需cd进目录并带./前缀),或用bash/sh显式调用绕过权限与路径限制。

在银河麒麟系统中,双击.sh脚本文件无响应是常态,不是脚本写错了,而是Peony文件管理器自V10 SP1起主动拦截.sh后缀的双击行为,且桌面环境不加载用户PATH和当前工作目录;必须通过终端执行才能绕过图形界面限制,确保shell解释器正确加载、权限生效、路径可解析。
先确认脚本是否具备可执行权限
Linux内核拒绝运行没有x位的文件,即使脚本语法完全正确。执行ls -l deploy.sh查看输出,若第4位不是x(例如显示-rw-r--r--),说明权限缺失。
运行chmod +x deploy.sh添加所有者执行权限。这一步不可跳过,否则后续所有./方式都会报“Permission denied”。
注意:如果脚本存放在U盘或NTFS分区,chmod可能静默失败——这类文件系统默认挂载时禁用执行位,需改用bash deploy.sh方式绕过。
终端中执行.sh脚本的两种可靠路径
方法一:带路径前缀的直接执行(推荐用于已赋权脚本)
第一步:cd /home/kylin/Scripts 进入脚本所在目录。
第二步:./deploy.sh 必须带./前缀,否则系统会在PATH中查找,而当前目录通常不在PATH里。
第三步:若提示$'\r': 未找到命令,说明脚本是在Windows下编辑的,换行符为CRLF;立即执行sed -i 's/\r$//' deploy.sh修复,否则所有执行均会失败。
方法二:显式调用解释器(免权限、免cd、兼容性最高)bash deploy.sh —— 支持[[ ]]、数组、source ~/.bashrc等bash专属语法。sh deploy.sh —— 若脚本仅用POSIX语法,且首行#!/bin/sh指向dash(麒麟默认),此方式最轻量。
【不要用python deploy.sh】—— python在麒麟上可能指向已废弃的python2或未安装的别名,应统一用python3 script.py运行.py文件。
处理常见报错的即时应对
执行时提示command not found,大概率是脚本里调用的命令(如rsync、jq)未安装或不在PATH中。先运行which rsync确认是否存在,再用sudo apt install rsync补全依赖。
若脚本含中文路径或参数,终端编码必须为UTF-8。检查locale | grep LANG,输出应为LANG=zh_CN.UTF-8;否则执行export LANG=zh_CN.UTF-8临时修复。
遇到No such file or directory却确认路径无误?可能是脚本首行#!/bin/bash中的/bin/bash不存在——麒麟某些精简版默认不装bash,先sudo apt install bash再重试。











