มีวิธีเรียกใช้ Bash scripts บน Windows หรือไม่? [ปิด]


100

ฉันซื้อและใช้ Windows 7 Ultimate และฉันชอบใช้เพื่อพัฒนาแอปพลิเคชัน ข้อเสียอย่างหนึ่ง (เช่นเดียวกับทุกระบบปฏิบัติการ) คือฉันไม่สามารถเรียกใช้สคริปต์ Bash ได้ มีวิธีเรียกใช้สคริปต์ Bash บน Windows โดยการติดตั้งซอฟต์แวร์บางตัวหรือไม่? มันก็โอเคถ้ามันใช้งานไม่ได้ 100% แต่ตราบใดที่ฟังก์ชั่นการใช้งานที่พบบ่อยที่สุดก็ควรจะดี


3
@Rajish ไม่อีกแล้ว…
msanford


1
@msanford นี่ไม่สมเหตุสมผลเลย เหตุใดเธรดนี้จึงได้รับอนุญาตให้ใช้งานได้ในขณะที่การทำซ้ำถูกปิด
Pacerier

@Pacerier รายการที่ซ้ำกันถูกลบโดยผู้เขียนเกือบจะแน่นอนเนื่องจาก mods มักจะไม่ลบคำถาม นั่นอาจเป็นสิ่งที่ความคิดเห็นของฉันอ้างถึง ฉันไม่รู้ว่าทำไมผู้เขียนถึงลบมัน เมื่อ 4 ปีที่แล้ว
msanford

คำตอบ:


80

ติดตั้งCygwinซึ่งรวมถึง Bash ในยูทิลิตี้ GNU และ Unix อื่น ๆ อีกมากมาย (โดยที่ไม่น่าจะเป็นไปได้ที่ bash จะมีประโยชน์มาก)

อีกทางเลือกหนึ่งคือMSYS ของ MinGWซึ่งรวมถึง bash และยูทิลิตี้ที่สำคัญกว่าเช่น awk โดยส่วนตัวแล้วฉันชอบ Cygwin เพราะมันมีเครื่องมือยกของหนักเช่น Perl และ Python ซึ่งฉันพบว่าขาดไม่ได้ในขณะที่ MSYS ข้ามสิ่งเหล่านี้และสมมติว่าคุณกำลังจะติดตั้งด้วยตัวเอง

อัปเดต : หากใครสนใจคำตอบนี้และกำลังใช้ MS-Windows 10 โปรดทราบว่า MS-Windows 10 มีคุณสมบัติ " Windows Subsystem For Linux " ซึ่งเมื่อเปิดใช้งานแล้วจะช่วยให้คุณสามารถติดตั้งอิมเมจโหมดผู้ใช้ของ Ubuntu และ จากนั้นเรียกใช้ Bash ที่ สิ่งนี้ให้ความเข้ากันได้ 100% กับ Ubuntu สำหรับการดีบักและเรียกใช้สคริปต์ Bash แต่การตั้งค่านี้เป็นแบบสแตนด์อโลนโดยสมบูรณ์จาก Windows และคุณไม่สามารถใช้สคริปต์ Bash เพื่อโต้ตอบกับคุณสมบัติของ Windows (เช่นกระบวนการและ API) ยกเว้นการเข้าถึงไฟล์ที่ จำกัด ผ่านคุณสมบัติDrvFS .


2
ดูเอกสารคู่มือระบบย่อย Windows สำหรับ Linux (WSL)สำหรับข้อมูลเพิ่มเติม
stomy

1
WSL เลิกใช้งาน Windows 10 S แล้ว ... :(
Javier García Manzano

2
ไม่ได้เลิกใช้งานเป็นเพียงหนึ่งในคุณสมบัติที่คุณจะไม่ได้รับหากคุณซื้อ Windows " S mall edition" ที่ราคาถูกกว่า นอกจากนี้ยังไม่มีใน Home Edition, IIRC
Guss

Git ช่วยให้คุณสามารถเรียกใช้ batch file ได้อย่างง่ายดายจากทุกที่ใน windows youtube.com/watch?v=7keNZT9579k
Muhammad Faizan Khan

@MuhammadFaizanKhan - พอร์ต Git ไปยัง Windows รวมถึงแอปพลิเคชัน "บรรทัดคำสั่ง" อื่น ๆ อีกสองสามตัว (Github Desktop เป็นตัวอย่างที่โดดเด่น) ยังมาพร้อมกับพอร์ต Windows ของ Bash ซึ่งมักจะไม่ใช่พอร์ต MinGW (กล่าวคือคอมไพล์โดยใช้ MinGW และ MSYS สำหรับความเข้ากันได้ของ Posix) โดยเฉพาะอย่างยิ่งถ้าคุณดูการติดตั้ง Git for Windows ของคุณคุณจะเห็นmingw32ไดเร็กทอรีที่มี MSYS เป็นพื้นฐาน ดังนั้น Git สำหรับ Windows จึงเป็น MinGW ที่มี Git (เป็นทางเลือกในตัวติดตั้ง MSYS) พร้อมตัวติดตั้งที่ "ดีกว่า": superuser.com/a/1362301/10942
Guss

31

ตัวเลือกที่ดีที่สุดที่ฉันสามารถหาได้คือGit Windowsเพียงแค่ติดตั้งจากนั้นคลิกขวาแล้วคลิก "Git Bash Here" ซึ่งจะเปิดหน้าต่างทุบตีป้อนคำอธิบายภาพที่นี่

เพื่อเปิดหน้าต่าง bash ดังนี้: ป้อนคำอธิบายภาพที่นี่

และคำสั่ง linux ทำงาน ...

ฉันได้ลองใช้คำสั่ง 'sh', 'vi', 'ssh', 'curl' ฯลฯ ...


นี่ - มันง่ายมากเลยเหรอ?
Kalpesh Soni

ใช่มีประโยชน์จริงๆ
Garvit Jain

4
คุณสามารถติดตั้ง MinGW ได้โดยไม่ต้องขยาย Git เพิ่มเติมหากสิ่งที่คุณต้องการคือเปลือกของมัน
Stefan Z Camilleri

คุณสามารถดูบทช่วยสอนหนึ่งนาทีได้ที่นี่youtube.com/watch?v=7keNZT9579k
Muhammad Faizan Khan

25

หากคุณกำลังมองหาบางสิ่งบางอย่างที่เป็นธรรมชาติมากขึ้นคุณสามารถใช้getGnuWin32เพื่อติดตั้งเครื่องมือบรรทัดคำสั่ง unix ทั้งหมดที่ได้รับการพอร์ต นอกจากนี้winBash ยังช่วยให้คุณมีสภาพแวดล้อมยูนิกซ์ที่ใช้งานได้มากที่สุด เพิ่มconsole2สำหรับโปรแกรมจำลองเทอร์มินัลที่ดีขึ้นและคุณแทบไม่สามารถบอกได้บน windows!

Cygwin เป็นชุดเครื่องมือที่ดีกว่าโดยรวม แต่ฉันพบว่าตัวเองประสบปัญหาแปลกใจเนื่องจากการแบ่งระหว่างมันกับหน้าต่าง ไม่มีโซลูชันใดที่ดีเท่ากับระบบลินุกซ์ดั้งเดิม

คุณอาจต้องการตรวจสอบการใช้virtualboxเพื่อสร้าง linux VM ด้วยตัวเลือกที่คุณเลือก ตั้งค่าให้แชร์โฟลเดอร์กับโฮสต์ระบบปฏิบัติการและคุณสามารถใช้สภาพแวดล้อมการพัฒนา linux จริงและแชร์กับ windows เพียงระวังเครื่องหมาย EOL เหล่านั้นพวกเขาจะได้รับยาทุกครั้ง


หรือ CoLinux: colinux.org
Guss

colinux ไม่ทำงานบน 64 บิต (ยัง)
hexicle

ไม่มีใครรู้จักผู้สืบทอดโครงการ win-bash? ไม่มีการพัฒนาอย่างแข็งขันอีกต่อไปและติดอยู่ที่ bash v 1.14 (bash ที่เหมาะสมตามโพสต์นี้คือ v 4.4)
Bjartr

@Bjartr ชาว Microsoft ได้เพิ่มคุณสมบัติเพื่อให้bash เวอร์ชันเนทีฟทำงานบน windows 7 ได้
Spencer Rathbun

@SpencerRathbun นั่นจะทำงานบน Windows 10 เท่านั้นฉันบังเอิญอยู่ใน Windows 7 ฉันยังไม่แน่ใจว่ามันเล่นกับการผสมไฟล์ปฏิบัติการและเส้นทางของ linux และ windows ดังนั้นมันอาจจะไม่ดีไปกว่า cygwin bash (จากมุมมองของฉัน) .
Bjartr

11

ตัวเลือกที่ดีที่สุด? รองรับ Windows 10 Native Bash!


2
ไม่ใช่ไม่ใช่ตัวเลือกที่ดีที่สุด คุณเพียงแค่เรียกใช้ linux ด้วยวิธีนี้ไม่ใช่ทุบตีใน windows - คุณไม่สามารถเรียกใช้ไฟล์ปฏิบัติการของ Windows จาก bash นั้นได้ (เว้นแต่คุณจะแก้ปัญหาด้วยcbwin...
ankostis

ตัวเลือก 'ดีที่สุด' อาจเป็นเรื่องของรสนิยม บางทีคุณพูดถูก อย่างไรก็ตามมันช่วยให้ฉันสามารถเรียกใช้สคริปต์ทุบตี (ส่วนใหญ่) บนพีซีที่ใช้ Windows ของฉันได้
ปอ 0515

1
คุณสามารถเรียกใช้สคริปต์ทุบตีเสมือนทั้งหมดได้ตราบใดที่พวกเขาไม่พยายามโต้ตอบกับโฮสต์ OS (Windows) WSL bash เป็นระบบย่อยเวอร์ชวลไลเซชันที่มีน้ำหนักเบาซึ่งสามารถรันไบนารี ELF ดั้งเดิม (เช่น Ubuntu) ได้ แต่คุณไม่สามารถหลีกหนีได้!
ankostis

10

คุณสามารถติดตั้งCygwinเพื่อเรียกใช้ Unix shell ภายใต้ Windows ได้ตลอดเวลา ฉันใช้ Cygwin อย่างกว้างขวางกับ Window XP


ฉันต้องติดตั้งแพ็คเกจอะไรเพื่อเรียกใช้ UNIX Shell ใน Cygwin
Tower

@rFactor หน้า Cygwin มีตัวติดตั้ง windows พร้อมส่วนประกอบที่จำเป็นทั้งหมด
Spencer Rathbun

ไซต์ Cygwin อธิบายถึงสิ่งที่ถูกย้ายไปและวิธีการติดตั้ง หากสิ่งที่คุณต้องการคือเชลล์การติดตั้ง Cygwin พื้นฐานก็น่าจะเพียงพอแล้ว
Michael Shopsin

9

หลังจากติดตั้ง git-scopeions ( https://code.google.com/p/gitextensions/ ) คุณสามารถเรียกใช้ไฟล์. sh จากพรอมต์คำสั่ง (ไม่จำเป็นต้องใช้. /script.sh เพียงแค่เรียกใช้เหมือนไฟล์ bat / cmd) หรือคุณสามารถเรียกใช้ในสภาพแวดล้อม bash "เต็ม" โดยใช้ MinGW Git bash shell

ฉันไม่ใช่แฟนตัวยงของ Cygwin (ใช่ฉันแน่ใจว่ามันทรงพลังจริงๆ) ดังนั้นการเรียกใช้สคริปต์ทุบตีบน windows โดยไม่ต้องติดตั้งให้สมบูรณ์แบบสำหรับฉัน


1
ฉันไม่รู้ว่าส่วนขยาย git คืออะไร แต่คำอธิบายบอกว่าเป็นอินเทอร์เฟซผู้ใช้แบบกราฟิกสำหรับ git คุณจะรันเชลล์สคริปต์จากเครื่องมือนี้อย่างไร บางทีคุณอาจหมายถึงเรียกใช้ด้วย msys bash ที่มี?
ตัวแปรที่น่า

เพียงเพื่อยืนยัน - git-extensions จะรวมสำเนา bash และตั้งค่าไว้ในเส้นทาง ฉันลองbashจากอินสแตนซ์พาวเวอร์เชลล์ล้มเหลวติดตั้งส่วนขยาย git และลองใหม่แล้วมันก็ใช้ได้
rtpHarry

4

ในการทำงานโดยกำเนิดคุณอาจต้องใช้ Cygwin (ซึ่งฉันขาดไม่ได้เมื่อใช้ Windows) ทันทีที่ค้างคาว +1 สำหรับ Cygwin สิ่งอื่นใดจะไร้อารยธรรม

อย่างไรก็ตามตามที่กล่าวไว้ฉันเพิ่งเริ่มใช้ยูทิลิตี้รวมกันเพื่อ PORT Bash scripts ไปยัง Windows ได้อย่างง่ายดายเพื่อให้เพื่อนร่วมงานต่อต้าน Linux ของฉันสามารถทำงานที่ซับซ้อนได้อย่างง่ายดายซึ่งยูทิลิตี้ GNU จัดการได้ดีขึ้น

โดยปกติฉันสามารถพอร์ตสคริปต์ Bash ไปยัง Batch ได้ในเวลาอันสั้นโดยเปิดสคริปต์ต้นฉบับในบานหน้าต่างเดียวและเขียนไฟล์ Batch ในบานหน้าต่างอีกบาน เครื่องมือที่ฉันใช้มีดังนี้:

ฉันชอบ UnxUtils มากกว่า GnuWin32 เนื่องจากว่า [ใครบางคนโปรดแก้ไขฉันถ้าฉันผิด] โดยปกติแล้วยูทิลิตี้ GnuWin จะต้องได้รับการติดตั้งในขณะที่ UnxUtils เป็นไบนารีแบบสแตนด์อโลนที่ใช้งานได้ทันที

อย่างไรก็ตาม CoreUtils ไม่มียูทิลิตี้ * NIX ที่คุ้นเคยเช่น cURL ซึ่งมีให้สำหรับ Windows ด้วย (curl.haxx.se/download.html)

ฉันสร้างโฟลเดอร์สำหรับโปรเจ็กต์และ SET PATH = เสมอ ในไฟล์. bat เพื่อให้ไม่มีการอ้างอิงคำสั่งอื่น ๆ นอกเหนือจากคำสั่งเชลล์ CMD พื้นฐาน (เช่นเดียวกับ UnxUtils เฉพาะที่จำเป็นในโฟลเดอร์โปรเจ็กต์เพื่อให้ Batch script ทำงานตามที่คาดไว้)

จากนั้นฉันคัดลอกไฟล์ CoreUtils .exe ที่จำเป็นไปยังโฟลเดอร์โครงการและอ้างอิงในไฟล์. bat เช่น ". \ curl.exe -s google.com" เป็นต้น

โปรแกรม Bat2Exe คือที่ที่เวทมนตร์เกิดขึ้น เมื่อไฟล์ Batch ของคุณเสร็จสมบูรณ์และได้รับการทดสอบเรียบร้อยแล้วให้เปิด Bat2Exe.exe และระบุเส้นทางไปยังโฟลเดอร์โครงการ จากนั้น Bat2Exe จะสร้างไบนารีของ Windows ที่มีไฟล์ทั้งหมดในโฟลเดอร์เฉพาะนั้นและจะใช้. bat ตัวแรกที่ใช้เป็นไฟล์ปฏิบัติการหลัก คุณยังสามารถรวมไฟล์. ico เพื่อใช้เป็นไอคอนสำหรับไฟล์. exe สุดท้ายที่สร้างขึ้น

ฉันได้ลองใช้โปรแกรมประเภทนี้สองสามโปรแกรมและไบนารีที่สร้างขึ้นจำนวนมากถูกตั้งค่าสถานะเป็นมัลแวร์ แต่เวอร์ชัน Bat2Exe ที่ฉันอ้างถึงนั้นทำงานได้อย่างสมบูรณ์และไฟล์. exe ที่สร้างขึ้นจะสแกนได้อย่างสมบูรณ์

ไฟล์ปฏิบัติการที่เป็นผลลัพธ์สามารถเรียกใช้แบบโต้ตอบได้โดยการดับเบิลคลิกหรือเรียกใช้จากบรรทัดคำสั่งพร้อมพารามิเตอร์ ฯลฯ เช่นเดียวกับไฟล์แบตช์ทั่วไปยกเว้นคุณจะสามารถใช้ฟังก์ชันการทำงานของเครื่องมือต่างๆที่คุณจะใช้ตามปกติได้ ใน Bash

ฉันรู้ว่ามันใช้เวลาค่อนข้างนาน แต่ถ้าฉันพูดนอกเรื่องเล็กน้อยฉันได้เขียน Batch script ที่ฉันเรียกว่า PortaBashy ที่เพื่อนร่วมงานของฉันสามารถเปิดใช้งานจากเครือข่ายแชร์ที่มีการติดตั้ง Cygwin แบบพกพา จากนั้นตั้งค่าตัวแปร% PATH% เป็นรูปแบบ * NIX ปกติ (/ usr / bin: / usr / sbin: / bin: / sbin) ฯลฯ และสามารถเปิดตัวใน Bash shell เองหรือเปิดตัวที่มีประสิทธิภาพมากขึ้นและ โปรแกรมจำลองเทอร์มินัล MinTTY สวย ๆ

มีหลายวิธีในการบรรลุสิ่งที่คุณพยายามจะทำอยู่เสมอ เป็นเพียงเรื่องของการผสมผสานเครื่องมือที่เหมาะสมสำหรับงานและหลาย ๆ ครั้งมันก็ขึ้นอยู่กับความชอบส่วนบุคคล


1

มีความเป็นไปได้ทางทฤษฎีอีกประการหนึ่งที่จะทำได้: Windows เวอร์ชันมืออาชีพมีการรองรับ POSIX ในตัวดังนั้นจึงสามารถรวบรวม bash สำหรับ Windows ได้

สงสารจัง แต่ยังไม่เจอที่เรียบเรียงเอง ...


3
ระบบ POSIX บน Windows ถูกละทิ้ง [1] ถูกแทนที่ด้วย "Windows Subsystem for Linux" ซึ่งใช้ระบบเวอร์ชวลไลเซชันที่มีน้ำหนักเบา "Drawbridge" เพื่อเรียกใช้ Ubuntu-bash ที่ไม่ได้ปรับเปลี่ยน แต่มีความแตกต่างบางอย่างเช่นเมื่ออยู่ในระบบนี้คุณไม่สามารถเรียกใช้ปฏิบัติการ Windows ได้อีกต่อไป! [1] blogs.msdn.microsoft.com/wsl/2016/04/22/…
ankostis

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