剛編寫的一個shell文件執行時突然遇到shell文件不能運行,一下子覺得奇了怪了,明明寫的shell文件,而且添加了可執行權限,竟然提示這個結果:如下
[testuser@ISER-2812 opt]$ sudo ./my.sh sudo: unable to execute ./my.sh: No such file or directory
嘗試對文件的用vim打開該sh文件,輸入:set ff ,顯示fileformat=unix,說明沒有問題(如果顯示fileformat=dos,則有問題,使用命令:set ff=unix 重新設置下文件格式再保存退出)。但是經過幾次嘗試還是提示這樣的現象,最后我打開shell文件,把文件的前幾行都刪除,特別是首句指定命令解釋器的那行代碼。將它們都刪除再在vi命令中編寫保存。這時再執行成功了。
於是想起問題了,我的shell文件是我從windows中的記事本中復制然后在linux的VI中粘貼的,而windows記事本中保存的格式是ANSI,此時粘貼到linux里時文件的頭部可能是垃圾字符導致linux下的shell不能識別sh文件。我沒有去嘗試,如果將記事本保存成utf8格式的話進行復制粘貼應該就不會碰到這樣的問題。