ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

shell无法执行的问题

2021-12-14 20:03:08  阅读:164  来源: 互联网

标签:脚本 转换方法 shell Windows 问题 sh 无法 执行


shell无法执行的问题

文章目录


原因1_换行符错误导致

摘要:

Linux 系统,shell 脚本文件内,换行符为 CRLF 导致的,转换为 LF 换行,即可正常运行。

在Notepad++软件上,视图–显示符号–显示行尾符,可看到二者差异,如下图所示:

在这里插入图片描述

转换方法1:Windows 下使用 notepad++

编辑–文档格式转换–转为 Unix(LF)

在这里插入图片描述

转换方法2:Linux 下使用 sed 命令

#另存模式
sed -e 's,^M,,g' old.sh > new.sh
#覆盖模式
sed -i 's,^M,,g' old.sh

注意 ^M的输入方式为:按住Ctrl,按下V,松开V,按下M,松开。

不是shift+6,再按M

不是shift+6,再按M

不是shift+6,再按M

剖析问题来源

  1. 该 shell 脚本文件在 Windows 系统上创建,或经过 Windows 系统另存;
  2. 该 shell 脚本通过 git 下载,但 git 配置了不自动转换格式;
  3. 该 shell 脚本由 Windows 习惯的程序生成。

原因2_执行权限导致

摘要:

shell 脚本由于种种原因,不具备执行的权限,权限问题包括 3 个方面:

问题1:缺少 shell 解析器

问题2:shell 文件本文的权限

问题3:操作系统对 shell 脚本执行的管理

问题1解决方法

这个问题的排查方法可以用命令 sh xxx.sh来测试,如果手动指定解析器,可以运行脚本的话,那么属于缺少shell解析器的问题,如果仍然无法运行脚本,则不属于问题1。

在 shell 文件开头,添加如下1行代码:

#!/bin/bash

问题2解决方法

通过chmod命令解决,如:

chmod a+x xxx.sh

问题3解决方法

在某些安全性较高的Linux发行版系统中,系统不允许未认证的程序执行,包括脚本。

可尝试,通过系统设置、安全中心等配置,调整安全级别,使其能够运行。


原因3_等你留言

标签:脚本,转换方法,shell,Windows,问题,sh,无法,执行
来源: https://blog.csdn.net/u010333084/article/details/121926980

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有