這確實很奇怪。您描述的步驟應該已經奏效,因此您的環境中必須存在一些小錯誤或執行這些步驟。有一些事情可以做,以幫助診斷此:
檢查控制字符
什麼你記錄看起來不錯,只要沒有錯別字或控制字符。您應該通過鍵入以下內容進行檢查:
cat -vt ./test
如果您看到任何可以解釋問題的意外額外文本。例如,行尾的「^ M」表示您的編輯器以Windows格式保存了該文件。
再生文件可靠
要創建已知良好的./test2
,複製粘貼下面的命令:
`which bash`
printf "#\!`which sh`\necho HELLO\n" > ./test2
chmod +x ./test2
./test2
exit
正在檢查這在您鍵入命令不能找到
.. 。
./ajio
...你確切地得到...
./ajio: Command not found.
......正如你所說的與./test
?我只是把名字叫做ajio,所以它不應該存在。如果他們的消息匹配,那麼它並沒有真正告訴你任何新東西。但是如果消息不同,那確認./test
至少被發現並且可執行。
也有可能您的sh
版本試圖告訴您沒有test
找不到,但是在運行test
的某些命令時找不到該shell試圖運行的命令。這不應該是echo命令,就像在shell中實現的大多數shell實現一樣,這將是一個內部命令。但是,shell可能會運行一個初始化腳本,其中包含一行指定它無法運行的命令。如果您運行的是man sh
,它會告訴您有關shell可能會嘗試運行的所有不同的啓動文件。這些可以與交互式啓動shell時使用的不同。但作爲初學者,檢查這些腳本的有效性可能令人望而生畏。很可能任何虛假的定製都會影響到你的個人shell啓動過程,而不會影響整個Linux的安裝,因此運行ls -ld ~/.*
來列出你的主目錄中的隱藏文件,並檢查看起來像shell啓動文件的任何東西(例如〜/ .bashrc,〜/ .profile,〜/ .bash_login)。檢查它們指定的任何命令可以與哪些命令一起找到,並在路徑變量設置爲包含它們的位置後調用。
相較於另一個shell
如果有問題與/ bin/sh的安裝/初始化,那麼你也許可以通過調用另一個shell繞過它。嘗試...
which zsh
which tcsh
which csh
...如果更多的這些人們發現一種替代殼給你,編輯或創建該文件指定外殼,阿拉...
#!/bin/csh
echo HELLO
...然後chmod +x
它和./
- 運行它。如果可行,那麼你知道你的問題是/ bin/sh特定的。
是否'LS /斌/ sh'顯示具有可執行位文件啓用? – Ether 2010-10-05 19:58:18
當你添加缺少的斜槓時,你是否仍然遇到問題?你用什麼(非常)奇特的選項裝載目錄? – 2010-10-05 22:36:03