จะเรียกใช้. sh บนพรอมต์คำสั่งของ Windows ได้อย่างไร


132

ฉันจะเรียกใช้. sh บนพรอมต์คำสั่งของ Windows 7 ได้อย่างไร ฉันมักจะได้รับข้อผิดพลาดนี้เสมอเมื่อพยายามเรียกใช้บรรทัดนี้

app/build/build.sh

ข้อผิดพลาด

'app' is not recognized...

หรือ,

bash app/build/build.sh

ข้อผิดพลาด

'bash' is not recognized...

มีความคิดอะไรที่ฉันพลาดไป?

ที่นี่คว้าหน้าจอ ป้อนคำอธิบายภาพที่นี่


6
คุณต้องการ cygwin (อาจจะ) คุณกำลังพยายามเรียกใช้สคริปต์ SHELL (.sh) บน Windows และนั่นเป็นวิธีเดียวที่ฉันเรียกใช้.shไฟล์ของฉันบน Windows
ha9u63ar

คำตอบ:


54

ข้อความแสดงข้อผิดพลาดระบุว่าคุณยังไม่ได้ติดตั้งbashหรือไม่ได้อยู่ในPATHไฟล์.

ยอดนิยมของ Google คือhttp://win-bash.sourceforge.net/แต่คุณต้องเข้าใจด้วยว่าสคริปต์ Bash ส่วนใหญ่คาดว่าจะมีสภาพแวดล้อมเหมือน Unix ดังนั้นการติดตั้ง Bash จึงไม่น่าจะช่วยให้คุณสามารถเรียกใช้สคริปต์ที่คุณพบบนเน็ตได้เว้นแต่จะได้รับการออกแบบมาโดยเฉพาะสำหรับสถานการณ์การใช้งานนี้โดยเฉพาะ วิธีแก้ปัญหาตามปกติคือhttps://www.cygwin.com/แต่มีหลายทางเลือกที่เป็นไปได้ขึ้นอยู่กับว่าคุณต้องการทำอะไรให้สำเร็จ

หาก Windows ไม่ได้เป็นศูนย์กลางของสถานการณ์การใช้งานของคุณการติดตั้งระบบปฏิบัติการฟรี (อาจจะเสมือนจริง) อาจเป็นวิธีที่ง่ายที่สุดในอนาคต

ข้อความแสดงข้อผิดพลาดที่สองเกิดจากการที่ Windows ยอมรับเครื่องหมายทับไปข้างหน้าเป็นตัวคั่นไดเร็กทอรี แต่ในบริบทนี้จะถูกตีความว่าเป็นตัวคั่นสวิตช์ กล่าวอีกนัยหนึ่ง Windows จะแยกวิเคราะห์บรรทัดคำสั่งของคุณเป็นapp /build /build.sh(หรือเพื่อถอดความด้วยอนุสัญญาอ็อพชัน Unix app --build --build.sh) คุณสามารถลองได้app\build\build.shแต่ไม่น่าจะได้ผลเนื่องจากสถานการณ์ที่ระบุไว้ข้างต้น


1
แน่นอนว่าด้วย Windows 10 คุณสามารถเปิดใช้งาน WSL และเกือบจะมีคอมพิวเตอร์จริงใน Windows ของคุณ
tripleee

148

ติดตั้งGIT ระหว่างการติดตั้ง GIT ให้เพิ่ม GIT Bash ลงในเมนูบริบทของ windows โดยเลือกตัวเลือก หลังจากการติดตั้งคลิกขวาในโฟลเดอร์ของคุณเลือกGIT Bash Here(ดูรูปที่แนบมา) และใช้คำสั่ง sh ของคุณเช่น:

sh test.sh

ป้อนคำอธิบายภาพที่นี่


1
มันไม่ได้ผลสำหรับฉัน หน้าต่างพรอมต์คำสั่งจะเปิดขึ้นแล้วปิดลงอย่างรวดเร็ว
desbest

28
ถ้าคุณมี GIT ติดตั้งคุณสามารถเพิ่มไปยังระบบ PATH sh.exeตัวแปรเส้นทางไปยัง ในกรณีของฉันมันคือ: c:\Program Files\Git\bin. จากนั้นเรียกใช้sh .\script.shจาก PowerShell
elshev

1
สิ่งนี้ใช้ได้ผลกับฉันอย่างมีเสน่ห์ใน Windows 10 ในปี 2020! แม้ว่าคำสั่งคัดลอก / วางจะไม่ทำงานสำหรับฉันเนื่องจากตั้งค่าไว้ที่ctrl-insและshift-ins
Nam G VU

51

วิธีที่ใช้บ่อยที่สุดในการเรียกใช้ไฟล์. shคือการใช้คำสั่งsh :

C:\>sh my-script-test.sh 

ตัวเลือกที่ดีอื่น ๆ คือการติดตั้งCygWin

ในตั้งอยู่ใน:Windowshome

C:\cygwin64\home\[user]

ตัวอย่างเช่นฉันเรียกmy-script-test.shใช้ไฟล์ของฉันโดยใช้คำสั่งbashเป็น:

jorgesys@INT024P ~$ bash /home/[user]/my-script-test.sh 

44
หากคุณไม่ได้ใช้มาตรการพิเศษเพื่อให้ได้มาคุณจะไม่มีshคำสั่งใน Windows
user2357112 รองรับ Monica

1
ตกลง -1 คุณหมายความว่าฉันต้องเพิ่มบทช่วยสอนเพื่อเข้าถึง sh จากบรรทัดคำสั่ง ???
Jorgesys

42
คำตอบของคุณจะแสดงราวกับว่าคุณคาดว่าจะสามารถพิมพ์shบนพรอมต์คำสั่งของ Windows โดยพลการและใช้งานได้
user2357112 รองรับ Monica

msys2 เป็นสถานที่ที่ดีในการรับคำสั่ง sh ตรวจสอบgithub.com/userzimmermann/MSYS2-cmdถ้าคุณต้องการใช้กับ cmd
Aralox

3
Bash และshคำสั่งติดตั้งกับ Git4Windows หากคุณเลือกตัวเลือกการติดตั้ง 'Install Bash'
Joel Ellis

13

คุณสามารถใช้ cmder

Cmder เป็นชุดซอฟต์แวร์ที่สร้างขึ้นจากความยุ่งยากอย่างแท้จริงในกรณีที่ไม่มีตัวเลียนแบบคอนโซลที่ดีบน Windows มันขึ้นอยู่กับซอฟต์แวร์ที่น่าทึ่งและเติมเต็มด้วยโทนสี Monokai และเค้าโครงพร้อมต์ที่กำหนดเองซึ่งดูเซ็กซี่ตั้งแต่เริ่มต้น

ภาพหน้าจอ

cmder.net


1
แม้ว่ามันจะดูเหมือนว่าจะมากับตัวเลือก Add-on แพ็คซึ่งรวมถึงคำสั่งทั่วไป Unix cmdเปลือกแพคเกจฐานน่าจะเป็นเพียงแค่การเปลี่ยนสำหรับ
tripleee

5

ในการอัปเดตครบรอบ Windows 10 การรันคำสั่งเชลล์ใน / ด้วย bash บน ubuntu บน windows ทำได้ง่ายยิ่งขึ้น

ฉันพยายามตั้งค่าภูมิภาคของฉันสำหรับเราเตอร์ x-wrt r7000 netgear ของฉันฉันพบว่าสิ่งต่อไปนี้ใช้ได้กับฉันโดยใช้ bash บน ubuntu บน windows คุณต้องเปิดใช้งานระบบย่อยที่พบในคุณสมบัติของ windows และเปิดโหมด dev

ssh admin@192.168.1.1 < /mnt/c/ccode-eu.sh

อาจเรียกใช้. แต่เป็นสภาพแวดล้อมที่แตกต่างกันอย่างสิ้นเชิง
TamusJRoyce

4

คุณลักษณะใหม่ใน Windows - รัน bash บน ubuntu บน windows - พร้อมใช้งานใน Windows 10 สร้าง "Insiders" หลังจากการประชุม Build:

https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/


เจ๋ง แต่คุณเรียกใช้shไฟล์ด้วยวิธีbashใด? ถ้าลองทำแล้วหน้าต่างก็กระพริบและหายไป หากฉันลากและวางไฟล์ลงในหน้าต่าง bash ที่เปิดอยู่มันจะบอกว่าไม่พบเส้นทาง (เพราะใช้รูปแบบที่แตกต่างกัน)
m93a

ปัจจุบันเป็นไปได้หรือไม่ที่จะเรียกใช้ไฟล์. sh บน Windows ตอนนี้ยังไม่สามารถลองได้ แต่สนใจ
JesusMurF

1
ฉันไม่ได้ลองด้วยตัวเอง แต่มีคำแนะนำจาก Microsoft เกี่ยวกับวิธีเรียกใช้ sh บน windows: docs.microsoft.com/en-us/windows/wsl/install-win10
claudiu.nicola

@ m93a ในหน้าต่างเทอร์มินัล Ubuntu bash path/to/scriptเรียกใช้สคริปต์ นอกจากนี้ยังมีshใน Ubuntu หากสคริปต์มี shebang และสิทธิ์ที่เหมาะสมก็path/to/scriptจะเรียกใช้ด้วย rnterpreter ที่ระบุไว้ใน shebang
tripleee

4

โดยส่วนตัวฉันใช้แบตช์ไฟล์นี้ แต่ต้องติดตั้ง CygWin (64 บิตตามที่แสดง) เพียงแค่เชื่อมโยงประเภทไฟล์ SH กับ batchfile นี้ (ExecSH.BAT ในกรณีของฉัน) และคุณสามารถดับเบิลคลิกที่. SH แล้วมันจะทำงาน

@echo off
setlocal

if not exist "%~dpn1.sh" echo Script "%~dpn1.sh" not found & goto :eof

set _CYGBIN=C:\cygwin64\bin
if not exist "%_CYGBIN%" echo Couldn't find Cygwin at "%_CYGBIN%" & goto :eof

:: Resolve ___.sh to /cygdrive based *nix path and store in %_CYGSCRIPT%
for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%~dpn1.sh"') do set _CYGSCRIPT=%%A
for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%CD%"') do set _CYGPATH=%%A

:: Throw away temporary env vars and invoke script, passing any args that were passed to us
endlocal & %_CYGBIN%\mintty.exe -e /bin/bash -l -c 'cd %_CYGPATH%;  %_CYGSCRIPT% %*'

บนพื้นฐานนี้ทำงานเดิม


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.