解决shell无法执行的问题

解决shell无法执行的问题

 更新时间:2023年11月24日 16:17:48   作者:逆光倾城  
这篇文章主要介绍了解决shell无法执行的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

目录
  • 原因1_换行符错误导致
    • 转换方法1:Windows 下使用 notepad++
    • 转换方法2:Linux 下使用 sed 命令
    • 剖析问题来源
  • 原因2_执行权限导致
    • 问题1解决方法
    • 问题2解决方法
    • 问题3解决方法
  • 总结

    原因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

    剖析问题来源

    • 该 shell 脚本文件在 Windows 系统上创建,或经过 Windows 系统另存;
    • 该 shell 脚本通过 git 下载,但 git 配置了不自动转换格式;
    • 该 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发行版系统中,系统不允许未认证的程序执行,包括脚本。

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

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:

    • linux系统使用XShell连接VMware虚拟机详细图文教程
    • 解决linux shell中传递包含空格的参数问题
    • Linux shell中如何获取当前目录
    • Linux中shell脚本的jq命令用法详解
    • 使用linux java shell启动脚本


    • shell
    • 无法执行

    相关文章

    • Discuz 7.0伪静态ReWrite的.htaccess规则

      在确定您的服务器支持伪静态ReWrite后,您可以通过修改设置.htaccess文件来实现Discuz论坛的伪静态功能 2010-12-12

    • linux虚拟机配置静态IP地址的完整步骤

      这篇文章主要给大家分享介绍了关于linux虚拟机配置静态IP地址的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 2018-11-11

    • Linux deepin 删除多余内核的实现方法

      这篇文章主要介绍了Linux deepin 删除多余内核的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 2019-12-12

    • LNMP系列教程之 设置404错误页面

      在之前的文章中分享到”设置301重定向的方法“文章,提到301,那肯定也要说说404错误页面吧。因为我们默认安装了LNMP后404页面不会自动设置,也不会默认到程序的404错误页面,而需要我们手工设置 2012-09-09

    • CentOS 7忘记密码解决方案过程图解

      这篇文章主要介绍了CentOS 7忘记密码解决方案过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 2020-08-08

    • Linux命令下crontab命令

      crontab是一个用来设置、删除或显示供守护进程cron执行的定时任务的命令。下面给大家介绍linux命令下crontab命令,需要的朋友一起看看吧 2016-11-11

    • 分析Linux内核调度器源码之初始化

      本篇文章将从源码的角度剖析内核调度的具体原理和实现,以Linux kernel 5.4 版本(TencentOS Server3 默认内核版本)为对象,从调度器子系统的初始化代码开始,分析Linux内核调度器的设计与实现 2021-06-06

    • CentOS7挂载新数据盘的完整步骤

      这篇文章主要给大家介绍了关于CentOS7挂载新数据盘的完整步骤,文中通过示例代码将实现的步骤介绍的非常详细,对大家学习或者使用CentOS7具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 2019-06-06

    • Linux中crontab输出重定向不生效问题的解决方法

      crontab命令相信大家都不陌生,下面这篇文章主要给大家介绍了关于Linux中crontab输出重定向不生效问题的解决方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧 2018-10-10

    • CentOS7如何执行PHP定时任务详解

      这篇文章主要给大家介绍了关于在CentOS7中如何执行PHP定时任务的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 2018-11-11

    最新评论

    版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
    文章名称:《解决shell无法执行的问题》
    文章链接:https://zhuji.vsping.com/196522.html
    本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。