Cygwin执行shell脚本软链接提示No such file或command not found问题
问题原因
- 执行
./file3返回No such file or directory的核心原因有两个:- shebang行格式错误:你提供的shebang行校验结果显示,
#!与/bin/bash之间存在多个空格。内核解析shebang的规则为将#!后的全部内容视为解释器路径,相当于系统尝试寻找路径为/bin/bash(带前置空格)的解释器,该路径不存在,因此触发报错。 - 目标脚本无执行权限:软链接自身的
lrwxrwxrwx权限不代表指向的目标文件.dir2/file3.sh具备可执行权限,内核执行时会校验目标文件的执行权限,缺失权限时部分系统会返回找不到文件的错误。 - 附加排查项:可执行
ls -l file3确认软链接指向的目标路径正确,排除创建软链接时拼写错误导致目标文件不存在的问题。
- shebang行格式错误:你提供的shebang行校验结果显示,
- 直接执行
file3返回command not found的原因:当前工作目录默认不在shell的PATH环境变量中,shell只会遍历PATH指定的目录查找可执行文件,不会主动扫描当前目录,因此找不到对应命令。
解决方案
- 修正shebang行:将
.dir2/file3.sh的首行修改为#!/bin/bash,删除#!和解释器路径之间的所有空格。 - 给目标脚本添加执行权限:执行
chmod +x .dir2/file3.sh为目标脚本配置可执行权限。 - 若需要直接使用
file3命令执行:可以临时将当前目录加入PATH,执行export PATH=.:$PATH(仅当前终端生效,存在安全风险,不建议长期保留该配置),也可以将软链接移动到系统默认的PATH目录下,例如执行mv file3 /usr/local/bin/。
内容的提问来源于stack exchange,提问作者Heinz
相关产品推荐
相关产品推荐

