當前位置: 首頁>>技術問答>>正文


在Windows上,如何執行.sh文件?

問題描述

當我嘗試通過命令./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 vs linux shell
 

次佳解決方案

看得出來,您嘗試在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

參考資料

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/3570.html,未經允許,請勿轉載。