Windows 10下.sh文件误关联记事本,无法在CMD运行,如何修改?
修复Windows 10中.sh文件关联问题的解决方案
我帮你整理了几个社区验证过的靠谱方案,一步步操作就能搞定:
方法一:用命令提示符(CMD)快速重置关联
这是最直接的方式,不用碰复杂的注册表:
- 以管理员身份打开CMD:右键点击开始菜单,选择「命令提示符(管理员)」或者「Windows终端(管理员)」
- 先恢复.sh文件的默认关联类型,输入命令:
assoc .sh=sh_auto_file - 接着设置用CMD执行.sh文件,输入:
要是你习惯用WSL运行Linux风格的.sh脚本,把上面的命令改成这个就行:ftype sh_auto_file="C:\Windows\System32\cmd.exe" /c "%1" %*ftype sh_auto_file="C:\Windows\System32\wsl.exe" "%1" %* - 关闭CMD,双击.sh文件试试,应该就能正常在CMD/WSL里运行了。
方法二:通过注册表编辑器修复(适合关联残留严重的情况)
如果命令行方法没生效,可能是注册表有残留,手动调整一下:
- 按
Win+R,输入regedit打开注册表编辑器 - 导航到
HKEY_CLASSES_ROOT\.sh,右键点击「默认」值,修改为sh_auto_file(如果原来不是这个的话) - 接着导航到
HKEY_CLASSES_ROOT\sh_auto_file\shell\open\command,把「默认」值改成:
同样,用WSL的话就改成"C:\Windows\System32\cmd.exe" /c "%1" %*"C:\Windows\System32\wsl.exe" "%1" %* - 关闭注册表,重启资源管理器(或者直接重启电脑),关联就生效了。
解决「无法删除关联/不能直接关联CMD」的问题
Windows确实不让直接删除文件关联,也没法在「打开方式」里直接选CMD(因为CMD不是常规的关联程序选项),但用这两个技巧就能绕开限制:
- 要是之前的关联残留顽固,先在管理员CMD里输入
assoc .sh=(注意末尾是空的),先清空当前的.sh关联,再重新执行方法一里的assoc和ftype命令 - 要是右键「打开方式」里还留着记事本的选项,打开注册表编辑器,导航到
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.sh\OpenWithList,删除里面对应记事本的条目(比如notepad.exe相关的键)就行。
小提醒
确保你的.sh脚本本身是有效的:如果是CMD脚本,里面要写CMD能识别的命令;如果是Linux脚本,记得用WSL的关联方式,不然CMD可能执行不了哦。
内容的提问来源于stack exchange,提问作者Mauricio Derbez del Pino




