Linux:.sh文件的格式及权限管理

问题场景

在Windows下git clone了一个工程,并通过PyCharm远程传到Linux服务器上。

执行dist_test.sh文件,报错
在这里插入图片描述

1. dos与unix

从上述报错中我们可以看到,报错原因是“$’\r’: command not found”,也就是发现了未知的“/r”命令。
我们用vim打开dist_bash.sh文件,发现其为"dos"格式:
在这里插入图片描述
而我们在Linux下应该使用“unix”格式,这两者的区别是,DOS下的文本文件是以“\r\n”(回车、换行)作为断行标志的,而Unix下的文本文件是以"\n"为标志。
由此,我们找到了问题的原因:

我们在Windos下下载了,sh文件,导致其格式为DOS,从而在Linux下产生了多余的“\r”命令~

解决办法:将dos格式转换成unix格式

  • (1)方法一:vim -> :set ff = unix
     用vim打开.sh文件,并输入“:set ff=unix”,保存退出即可(:wq)
    在这里插入图片描述
  • (2)方法二:doc2unix
     也可以直接用dos2unix命令进行转换
    在这里插入图片描述

再次vim进入文件,发现不再是dos格式
在这里插入图片描述
成功执行:
在这里插入图片描述

2. chmod 权限管理

这里运行.sh文件需要使用"bash"命令,原因是它并没有可执行权限,这一点可以用“ls -l”(或 ll)命令来查看:
(ls命令可参考:菜鸟教程
在这里插入图片描述
我们可以利用chmod命令对其增加可执行权限(用“x”表示)
(我理解chmod应该是change mode的缩写,使用方法可参考:菜鸟教程
在这里插入图片描述
我们发现执行之后dist_test.sh文件变为绿色,且其增加了“x”权限,代表其可执行,这样我们就可以直接运行这个.sh文件了:
在这里插入图片描述

发布了52 篇原创文章 · 获赞 4 · 访问量 2138

猜你喜欢

转载自blog.csdn.net/qq_42191914/article/details/103893310