解决shell无法执行的问题

 更新时间:2023年11月24日 16:17:48   作者:逆光倾城  
这篇文章主要介绍了解决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

剖析问题来源

  • 该 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搭建Docker环境全过程

    Linux搭建Docker环境全过程

    这篇文章主要介绍了Linux搭建Docker环境全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • centos8使用Docker部署Django项目的详细教程

    centos8使用Docker部署Django项目的详细教程

    这篇文章主要介绍了在centos8使用Docker部署Django项目的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • 详解Linux下调试器GDB的基本使用方法

    详解Linux下调试器GDB的基本使用方法

    GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。不管是调试Linux内核空间的驱动还是调试用户空间的应用程序,掌握gdb的用法都是必须。而且,调试内核和调试应用程序时使用的gdb命令是完全相同的
    2021-06-06
  • Linux下使用killall命令终止进程的8大用法实例详解

    Linux下使用killall命令终止进程的8大用法实例详解

    Linux 的命令行提供很多命令来杀死进程。这篇文章主要介绍了Linux下使用killall命令终止进程的8大用法,需要的朋友可以参考下
    2019-04-04
  • Linux下高并发socket最大连接数所受的各种限制(详解)

    Linux下高并发socket最大连接数所受的各种限制(详解)

    下面小编就为大家带来一篇Linux下高并发socket最大连接数所受的各种限制(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • 使用 DataAnt 监控 Apache APISIX的原理解析

    使用 DataAnt 监控 Apache APISIX的原理解析

    Apache APISIX 是一个开源的云原生 API 网关,作为 API 网关,它兼具动态、实时、高性能等特点,提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能,这篇文章主要介绍了如何使用 DataAnt 监控 Apache APISIX,需要的朋友可以参考下
    2022-06-06
  • Linux系统下部署项目的设置方法

    Linux系统下部署项目的设置方法

    这篇文章主要介绍了Linux系统下部署项目的教程详解,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • Ubuntu下安装nvidia显卡驱动(安装方式简单)

    Ubuntu下安装nvidia显卡驱动(安装方式简单)

    这篇文章主要介绍了Ubuntu下安装nvidia显卡驱动,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • 如何利用sed命令高效删除文件的特定行

    如何利用sed命令高效删除文件的特定行

    这篇文章主要给大家介绍了关于如何利用sed命令高效删除文件的特定行的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Ubuntu部署python3.5的开发和运行环境

    Ubuntu部署python3.5的开发和运行环境

    这篇文章主要介绍了Ubuntu部署python3.5的开发和运行环境,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-01-01

最新评论