解决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发行版系统中,系统不允许未认证的程序执行,包括脚本。

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

总结

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

相关文章

  • CentOS6.4 下安装SVN的详细教程(超详细)

    CentOS6.4 下安装SVN的详细教程(超详细)

    这篇文章主要介绍了CentOS6.4 下安装SVN的详细教程,在安装之前需要检查是否已经安装过了,然后使用yum install subversion安装,具体操作详细过程请参考本文
    2016-10-10
  • 详解Linux文件系统:ext4及更高版本

    详解Linux文件系统:ext4及更高版本

    今天小编就为大家分享一篇关于Linux文件系统:ext4及更高版本的详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-09-09
  • linux sysctl参数配置详细介绍

    linux sysctl参数配置详细介绍

    这篇文章主要介绍了linux sysctl参数配置详细介绍的相关资料,需要的朋友可以参考下
    2017-02-02
  • Centos7.0安装ceph(JEWEL)及以上版本的实例解析

    Centos7.0安装ceph(JEWEL)及以上版本的实例解析

    这篇文章主要介绍了Centos7.0安装ceph(JEWEL)及以上版本的实例解析,需要的朋友可以参考下
    2018-02-02
  • linux挂载新磁盘后原数据文件不见的解决办法

    linux挂载新磁盘后原数据文件不见的解决办法

    linux挂载新磁盘后原数据文件不见了,丢失了吗,没有,这篇文章就教你找回解决办法,文章中有详细的操作步骤,有不会找的小伙伴可以参考阅读本文
    2023-08-08
  • 腾讯云上免费部署HTTPS的方法步骤

    腾讯云上免费部署HTTPS的方法步骤

    这篇文章主要介绍了腾讯云上免费部署HTTPS的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • linux文件上传,给文件或目录添加apache权限的方法

    linux文件上传,给文件或目录添加apache权限的方法

    下面小编就为大家带来一篇linux文件上传,给文件或目录添加apache权限的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • vscode远程免密登入Linux服务器的配置方法

    vscode远程免密登入Linux服务器的配置方法

    这篇文章主要介绍了配置vscode远程免密登入Linux服务器的操作方法,主要包括windows端操作和linux服务端操作,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • 详解如何在 CentOS7.0 上搭建DNS 服务器

    详解如何在 CentOS7.0 上搭建DNS 服务器

    BIND也叫做NAMED,是现今互联网上使用最为广泛的DNS 服务器程序,本篇文章主要介绍了如何在 CentOS7.0 上搭建DNS 服务器,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • LiteSpeed服务器用htaccess的防盗链代码

    LiteSpeed服务器用htaccess的防盗链代码

    最近换到hawkhost,他们用的是LiteSpeed Webserver作为HTTP服务器软件,而不是Apache,以前使用的htaccess在这里不生效。
    2010-08-08

最新评论