解决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