天天看点

利用TortoiseGit将shell脚本文件从远端Gitlib库克隆到本地后脚本无法执行

故障现象:

在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脚本文件从远端Gitlib库克隆到本地后脚本无法执行

将此处的选项去掉后,我使用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++进行文本格式转换

编辑->档案格式转换->,其中可以进行三种文本格式的转换。