2008年8月12日 星期二

執行shell script,出現error

當執行一個 Shell Script可執行檔時,出現無法執行的情況時,可以採用下列方法解決。
必須先確認此Script是可執行的

# chmod 755 filename

一般在 Shell Script的第一行會寫由哪一個 Shell來執行,如下列所示


#!/bin/sh
....

[狀況一]:
執行 ./filename 時,出現 "bad interpreter:No such file or directory"等訊息時

[Solution]:確認 Script是什麼格式 ( dos、unix、mac)
1. vi filename,再執行命令
:set ff?
可以看到 fileformat是dos 或 unix的字樣,如果是dos格式,使用 :set fileformat=unix,強制成為 unix格式,存檔退出,再執行試試看。

2. 用 od -t x1 filename
如果看到 " 0d 0a"的字串,這個檔案為 dos格式,只有 0a而沒有0d,則是unix格式。

3. 除了用 vi 的命令變更檔案格式,也可以使用 unix2dos 或 dos2unix這兩個程式
# dos2unix filename <--變更為unix格式

[狀況二]:
執行 Script時,出現 "permission denied"的訊息

[Solution]:查看 Script 的所在目錄,mount table是否有加入 "noexec"的option
# cat /etc/fstab
/dev/hda5   /ftp      ext3      noexec,user_xattr           0  2
/dev/hda7 /home ext3 defaults 0 2
/dev/hda9 /tmp ext3 defaults 0 2

沒有留言: