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文件了: