您是否遇到過 Execute permission denied
或 The parameter list is too long
這樣的錯誤消息?您想知道錯誤的原因嗎?這些是 UNIX 和 Linux 新手經常遇到的錯誤,他們可能不知道如何避免這些問題。本文解釋這些錯誤並提供解決方法。
./foo: 0403-006 Execute permission denied.
您編寫或下載了一個新的 shell 腳本,很想試試它。這聽起來不錯,但是在試圖執行這個命令時,收到了錯誤消息 ./foo: 0403-006 Execute permission denied
。怎麼回事兒?這個消息可能源於兩個問題:
您不具有執行這個命令的足夠權限
檢查權限最簡便的方法是,查看您是作為哪個用戶登錄服務器的,然後查看 ls –l
的輸出:
# id uid=5008(cormany) gid=330(atc) groups=110(sales),201(sshd) # ls -l foo -rwxrw-r-- 1 cormany atc 75 Jun 10 18:46 foo
根據這個示例,您是作為用戶 cormany 登錄的,而 shell 腳本的所有者是 cormany,他具有 rwx 權限(即讀、寫和執行)。這沒問題,所以我們考慮下一個可能的原因。
對於腳本中定義的 shell,您不具有足夠的權限,無法告訴 shell 應該如何解釋腳本和其中的命令
我們來看看腳本的內部:
# cat foo #!/bin/ksh.new echo "This is a just a test" exit 0
根據第一行,這個腳本看起來應該作為 Korn shell 腳本進行解釋。通過檢查所用的 shell 的權限,可以確認實際上是否可以使用它:
# ls –l /bin/ksh.new -r-xr-x--- 5 bin bin 289072 May 27 19:03 /bin/ksh.new
作為 root 用戶,修改要使用的 shell 的文件權限,然後再試一次:
# su - root's Password:
# id uid=0(root) gid=0(system) groups=2(bin),3(sys),7(security),8(cron),10(audit),11(lp)
# chmod 555 /bin/ksh.new
# ls -l /bin/ksh.new -r-xr-xr-x 1 bin bin 289072 Jun 10 18:45 /bin/ksh.new
su
,恢復為原來的用戶:
# exit # id uid=5008(cormany) gid=330(atc) groups=110(sales),201(sshd)
# ./foo This is a just a test
好了,問題解決了!