开发者

解决shell无法执行的问题

开发者 https://www.devze.com 2023-11-26 09:57 出处:网络 作者: 逆光倾城
目录原因1_换行符错误导致转换方法1:Windows 下使用 notepad++转换方法2:linux 下使用 sed 命令剖析问题来源原因2_执行权限导致问题1解决方法问题2解决方法问题3解决方法总结原因1_换行符错误导致
目录
  • 原因1_换行符错误导致
    • 转换方法1:Windows 下使用 notepad++
    • 转换方法2:linux 下使用 sed 命令
    • 剖析问题来源
  • 原因2_执行权限导致
    • 问题1解决方法
    • 问题2解决方法
    • 问题3解决方法
  • 总结

    原因1_换行符错误导致

    摘要:

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

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

    如下图所示:

    解决shell无法执行的问题

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

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

    解决shell无法执行的问题

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

    #另存模式
    sed -e 's,^Mwww.devze.com,,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 系统上创建,或www.devze.com经过 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+xphp xxx.sh

    问题3解php决方法

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

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

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号