問題描述
當我嘗試通過命令./name.sh在命令行中執行文件(name.sh)時,我收到錯誤消息:
“.” is not recognized as an internal or external command, operable or batch file
執行.sh文件的正確方法是?
最佳解決方法
從錯誤信息來看,你使用的是Windows CMD.EXE。它使用跟Linux不同的語法來執行命令。假設您已經安裝了Cygwin或類似的設備,則需要使用sh name.sh
。
需要澄清的是,Windows係統上沒有內置程序來支持.sh文件。要運行它,您需要安裝第三方工具,例如Cygwin。
次佳解決方案
看得出來,您嘗試在Windows命令提示符下運行Linux命令。下麵從兩個方麵看這個問題:
第一個方麵:
在Linux上,正斜杠是一個路徑分隔符。而在Windows上,反斜杠是一個路徑分隔符,而正斜杠通常表示一個參數。
因此,Windows認為您正在嘗試運行一個名為”.”的命令並將其解析為參數”/name.sh”。正確的約定將是”.\name.sh”。此外,Windows係統會自動搜索當前目錄中的命令,所以您可以直接輸入”name.sh”。
第二個方麵:
Windows並不知道什麽是sh腳本,sh是一個Linux上的概念。通常可以安裝Cygwin來解決這個問題,如果你真的想要在windows上運行一個sh腳本。
另外,您也可以將腳本重命名為name.bat,並刪除”#!/bin/sh”行。現在你有一個Windows應該理解的批處理文件。更多有關批處理文件參考:這裏中的信息。
第三種解決方案
另外一種選擇,安裝Linux係統吧。從命令提示行輸出:
sh runide.sh
要麽
sudo sh runide.sh
就可以正常執行程序了。
第四種方案
Windows係統本身不能運行.sh
來執行shell腳本。是已經安裝了像CygWin這樣的東西,程序不能執行?還是就是想在cmd.exe
中運行程序?
第五種方案
打個比方,你這樣做相當於試圖用橙汁代替汽油來驅動你的汽車。
如果一定要這樣做,需要安裝一個提供”sh.exe”程序或”csh.exe”或”bash.exe”程序(tsh.exe)的環境
或者,如果您非常了解Unix腳本命令,並且您知道Windows .cmd和.bat文件命令,那麽您可以將.sh文件轉換為.bat或.cmd文件。即使如此,您也將經常遇到更多的Unix風格的程序,在Windows下沒有對應,如grep,sed,vi,emacs等。因此,安裝CygWin – 隻需其中的shell和Unix工具。
其他方案
在Windows中使用Github吧,它包含所有Unix環境需要的可執行文件。
https://github-windows.s3.amazonaws.com/GitHubSetup.exe