之前在Windows下寫好了一個(gè)python腳本,運(yùn)行沒問題,,今天在Linux下,,腳本開頭的注釋行已經(jīng)指明了解釋器的路徑,也用chmod給了執(zhí)行權(quán)限,,但就是不能直接運(yùn)行腳本,。
后來一想,應(yīng)該是編碼問題,。Windows下,,文本的換行是\r\n一同實(shí)現(xiàn)的,而Lnix/UNIX下則只用\n,。對(duì)于:
#!/usr/bin/env python\r\n
這樣一行文本,,windows下的程序會(huì)認(rèn)為#!/usr/bin/env python就是一行。而linux會(huì)認(rèn)為#! /usr/bin/env python\r是一行,。于是就報(bào)錯(cuò)了,,因?yàn)楦緵]有python\r這個(gè)文件。但是還是有點(diǎn)說不通,,env如果出錯(cuò)的話應(yīng)該是報(bào)這樣的錯(cuò)誤信息的:
/usr/bin/env: python : No such file or directory (python后面有一個(gè)回車符)
那為什么現(xiàn)在是:
: No such file or directory
這主要是因?yàn)閈r這個(gè)字符的緣故,。在linux終端下,輸出\r會(huì)什么都不顯示,,只是把光標(biāo)移到行首,。于是終端雖然輸出了/usr/bin/env: python,但是碰到\r后,,光標(biāo)會(huì)被移到行首,,接著輸出了:No such file or directory把前面的覆蓋掉了。于是出現(xiàn)了那個(gè)莫名其妙的出錯(cuò)信息了,。
解決辦法:
用vim打開該sh文件,,輸入:
:set ff
回車,顯示fileformat=dos,,重新設(shè)置下文件格式:
:set ff=unix
保存退出