故障现象:
在Windows下我利用TortoiseGit将shell脚本文件从远端Gitlib库克隆到本地后在Linux下脚本无法执行,运行脚本时出现如下错误提示:
/bin/sh: 0: Can't open
解决过程:
好好的脚本为啥突然就不能执行了,之前可是没有问题的啊(注:我的电脑被重装过,TortoiseGit也重新安装了,和之前没问题时的环境还是有点不一样)。
我将出问题的脚本和之前没问题的脚本(还好我有备份)通过Beyond Compare 3软件比对发现有问题的shell脚本的文件格式变成了Windows,而没有问题的shell脚本的文件格式为Unix,那这样的话他们的行结束符就会有差异,这可能就是有问题的shell脚本不能执行的原因。我用notepad++将有问题的shell的文件格式由Windows转换为Unix,之后再运行,可以了。看来就是文本格式原因造成的。
shell脚本不能运行的原因算是找到了,但是为什么使用TortoiseGit克隆远端的源码会将文件的格式转换了?难道与TortoiseGit的设置有关?果然,就是与TortoiseGit的设置有关,将文件格式有Unix转换为Windows的就是由下面红色框中的选项决定的;

将此处的选项去掉后,我使用TortoiseGit从远端克隆的shell脚本就能正常在Linux系统中运行了。
知识补充:
1.在三大OS下,其环境下的行结束符是如下所示,所以当Unix OS的文本文档用Win OS来读取时,就会发生问题,所有的文字都在同一行。
OS : 十六进制 -> ascii码 -> 简称 -> 全称/中文名称
Mac OS: 0D -> \r -> CR -> Carriage Return / 回车(符)
Unix OS: 0A -> \n -> LF -> Line Feed / 换行(符)
Win OS: 0D 0A -> \r\n -> CR LF
2.使用notepad++查看当前文本格式
Notepad++界面中,在右下角有文件格式的描述:“Dos\Windows或Unix或Mac”
3.使用notepad++进行文本格式转换
编辑->档案格式转换->,其中可以进行三种文本格式的转换。