ฉันจะใช้เชลล์เหมือน Bash บน Windows ได้อย่างไร


53

ฉันใช้ Linux และ Mac และฉันจะสอนบางสิ่งบรรทัดคำสั่งในไม่ช้า

ฉันจะติดตั้งอะไรบน Windows เพื่อให้หน้าต่างเทอร์มินัลคล้ายกับเชลล์ Mac / Linux Bash พื้นฐานมากที่สุด

ฉันต้องการกำหนด. bash_aliases ด้วยถ้าเป็นไปได้


3
เราเคยputtyเชื่อมต่อกับเซิร์ฟเวอร์ linux จริง บน windows ฉันมักจะลังเลและอยากจะใช้cygwinลังเลเพราะประสบการณ์การติดตั้งที่เงอะงะของฉัน แต่โดยส่วนตัวแล้วฉันพบว่าใช้งานได้สะดวกกว่า msys และเร็วกว่า vm เมื่อติดตั้งแล้ว cygwin ปรากฎว่าพกพาได้อย่างง่ายดายเพียงแค่คัดลอกไดเรกทอรีมันก็เพียงพอแล้วอย่างไรก็ตามมันจะสร้างชื่อผู้ใช้ใหม่ในแต่ละเครื่อง / ผู้ใช้ตามชื่อผู้ใช้ windows (โดยค่าเริ่มต้นอย่างน้อย) แต่โปรดจำไว้ว่าเนื่องจาก cygwin / msys สามารถมองเห็นได้ว่าเป็น "การกระจาย" แบบกำหนดเองสวิตช์คำสั่ง [ไม่จำเป็น] บางตัวอาจหายไป ทดสอบพวกเขา
n611x007

5
Microsoft เพิ่งประกาศว่าการอัปเดตครั้งต่อไปของ Windows 10 จะรวมถึง Bash
Dmitri Nesteruk

คำตอบ:


42

คุณสามารถติดตั้งCygwinหรือMSYS / MinGWหรือติดตั้งลีนุกซ์แบบเต็มในเครื่องเสมือน (ตัวอย่างเช่นใช้VirtualBox )


ฉันใช้ cygwin ที่มีขนาด 135 mb (บรรจุ 25 mb) คัดลอกมาจากคอมพิวเตอร์เครื่องอื่น (พกพา) มันสร้างชื่อผู้ใช้ใหม่ตามผู้ใช้ปัจจุบันคอมพิวเตอร์ใหม่และทำงานอย่างสมบูรณ์ cygwin ปัจจุบันของฉันคือ 800 mb กับสภาพแวดล้อมการสร้างรหัสแหล่ง 200-300 mb และบางสิ่ง
n611x007

2
หมายเหตุ: ตอนนี้คุณสามารถติดตั้ง "Windows Subsystem สำหรับ Linux" ซึ่งอนุญาตให้คุณรัน Linux shell โหมดผู้ใช้ดั้งเดิมและเครื่องมือบน Windows ดูคำตอบด้านล่าง ...
MrHinsh - Martin Hinshelwood

48

ตอนนี้คุณสามารถติดตั้งระบบย่อย Windows สำหรับลินุกซ์ที่ช่วยให้คุณทำงานในโหมดผู้ใช้ลินุกซ์เปลือกพื้นเมืองและเครื่องมือใน Windows สิ่งนี้ทำให้คุณสามารถรันBash shell ได้โดยตรงบน Windows และขึ้นอยู่กับ Ubuntu

สิ่งนี้ถูกนำมาใช้ใน Windows 10 พร้อมกับ Anniversary Update (2016) และไม่ได้เปิดใช้งานตามค่าเริ่มต้น ในการเปิดใช้งานฟีเจอร์ใหม่บนเครื่อง Windows 10 Anniversary Update ให้ทำดังต่อไปนี้:

  1. ไปที่การตั้งค่า -> อัปเดตและความปลอดภัย -> สำหรับนักพัฒนาและเลือก "โหมดนักพัฒนาซอฟต์แวร์"
  2. แผงควบคุม -> โปรแกรมและคุณสมบัติแล้วคลิก "เปิดหรือปิดคุณสมบัติ Windows" ที่บานหน้าต่างด้านซ้ายบน
  3. ในกล่องโต้ตอบเลือก "ระบบย่อย Windows สำหรับ Linux" และคลิกตกลง
  4. รีบูตเครื่อง
  5. ค้นหา "bash" และคลิกที่มันควรจะเปิดพร้อมรับคำสั่งและถามคุณว่าคุณต้องการติดตั้ง "Ubuntu บน Windows" ดำเนินการต่อด้วย "y"
  6. หลังจากการติดตั้งมันจะขอให้สร้างชื่อผู้ใช้และรหัสผ่าน UNIX
  7. ตอนนี้คุณพร้อมที่จะใช้เชลล์ bash แล้ว

ย้อนกลับไปในปี 2558 โครงการแอสโตเรียเริ่มนำแอพ Android มาสู่ Windows และพวกเขาสร้างระบบย่อยลินุกซ์ที่เรียกว่าระบบย่อย Windows สำหรับ Linux (WSL) เพื่อจุดประสงค์ ในที่สุดโครงการ Astoria ก็ถูกทิ้งเนื่องจากทำลายกลยุทธ์ UWP (แพลตฟอร์ม Windows สากล) แต่บางส่วนยังคงอยู่และสร้างพื้นฐานของการทุบตีสำหรับ Windows ตลอดระยะเวลาที่ผ่านมา Microsoft ได้ร่วมมือกับ Canonical (ผู้สร้าง Ubuntu Linux) เพื่อให้พวกเขามีรูปภาพดั้งเดิมพร้อมด้วยเครื่องมือ / ไบนารีที่รองรับทั้งหมด

ข้อมูลเพิ่มเติมสามารถดูได้ที่นี่
https://blogs.msdn.microsoft.com/commandline/2016/04/06/bash-on-ubuntu-on-windows-download-now-3/
https://blogs.windows.com / buildingapps / 2016/03/30 / run-bash-on-ubuntu-on-windows /
https://sec.ch9.ms/sessions/build/2016/P488.mp4 (วิดีโอ)



ฉันชอบคำตอบนี้ดีกว่า!
ปีเตอร์

1
@ Peter ขอบคุณขอบคุณลองใช้งานเมื่อวานนี้สามารถรับ gcc / g ++ ไปได้สามารถใช้งาน Firefox ผ่าน xserver (ค่อนข้างช้าพวกเขาใช้งานซีพียูช้าไหม) Chrome และเบราว์เซอร์เริ่มต้นทำงานล้มเหลวและคำสั่งบางอย่างเช่น 'หน้าจอ' ไม่ทำงานสิ่งที่ควรเริ่มต้นในการอัปเดตครั้งต่อไปเพื่อทุบตีเนื่องจากยังอยู่ในช่วงเบต้า ต้องบอกว่านี่เป็นเพียงแค่ทุบตีพร้อมใช้งานบน Windows เป็นสิ่งที่ยอดเยี่ยม! มันเปิดโอกาสมากมาย ขอชื่นชม Microsoft!
Nemo

นอกจากนี้คุณยังสามารถเรียกใช้สิ่งนี้ได้ใน Powershell (เรียกใช้ในฐานะผู้ดูแลระบบ): Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Windows-Subsystem-Linux"และติดตั้งสิ่งต่อไปนี้จากร้านค้า Windows: Ubuntu, Debian, OpenSUSE, Kali Linux
Zhenhir

18

นี่คือรายการตัวเลือกที่มีอยู่ในปี 2018-05 พร้อมกับการอัปเดตบางอย่างเกี่ยวกับ WSL ระหว่างปี 2019-01 พร้อมรายละเอียดเล็กน้อยเกี่ยวกับแต่ละรายการ

ตัวเลือกที่โดดเด่น

CygwinและBabun

Cygwin แสดงสิ่งต่อไปนี้:

  1. เปลือกทุบตีและอาคาร Mintty
  2. ยูทิลิตี้ลีนุกซ์ทั่วไปที่มีอยู่หลายตัวได้รับการคอมไพล์ให้ทำงานบน Windows
  3. เลเยอร์ความเข้ากันได้ที่ครอบคลุมที่ช่วยให้โปรแกรม Linux สามารถทำงานบน Windows

Cygwin ตั้งเป้าหมายที่จะทำให้การย้ายแอพพลิเคชัน Linux บน Windows เป็นเรื่องง่าย ถ้าโปรแกรม C บางตัวได้รับการออกแบบสำหรับ Unix และคาดว่าจะใช้คุณสมบัติเช่นไพพ์, ไฟล์แบบ Unix และการเข้าถึงไดเร็กตอรี่เป็นต้นจากนั้นคุณสามารถคอมไพล์มันสำหรับ Cygwin และ Cygwin จะทำหน้าที่เป็นเลเยอร์ความเข้ากันได้ระหว่างรหัสและOS ต่างประเทศ (Windows) . สิ่งนี้ทำให้โปรแกรม C เดียวกันสามารถทำงานได้ทั้งบน Linux และ Windows โดยมีการดัดแปลงเพียงเล็กน้อยหรือไม่มีเลย รายชื่อโปรแกรมลีนุกซ์จำนวนมากได้รับการปฏิบัติและสามารถทำงานได้เมื่อคุณติดตั้ง Cygwin อย่างไรก็ตามคุณผู้ใช้โปรแกรมเหล่านี้อาจต้องคุ้นเคยกับ Unix ตัวอย่างเช่นคุณอาจต้องผ่านการโต้แย้งเช่น/cygdrive/c/autoexec.batแทนc:\autoexec.batและพร้อมที่จะจัดการกับผลลัพธ์ด้วยการเลิกจ้างบรรทัด Unix ( \n) แทนการยกเลิกบรรทัด Windows ( \r\n)

คอลเลกชันของโปรแกรม Cygwin ทั้งหมดประกอบด้วยที่เก็บและแม้ว่า Cygwin จะไม่มีตัวจัดการแพ็คเกจ Linux แบบดั้งเดิมที่คุณสามารถเพิ่มลบและอัปเดตโปรแกรมจากที่เก็บนี้ได้ตลอดเวลาด้วยวิธีที่ตอบโต้ได้ง่ายมาก (คุณเรียกใช้ setup.exe ของ Cygwin ที่ เมื่อใดก็ตามหลังจากการติดตั้งเสร็จสิ้น)

Babunเป็น Cygwin พร้อมผู้จัดการแพ็คเกจเต็มรูปแบบ (ข้อตกลง), oh-my-zsh สำหรับเชลล์, คอมไพล์, การอัพเดตอัตโนมัติและสถาปัตยกรรมเชิงปลั๊กอิน แม้ว่าเชลล์เริ่มต้นคือ zsh คุณสามารถเปลี่ยนไปใช้ bash ได้อย่างง่ายดาย ดูเหมือนว่าจะเป็นการอัพเกรดที่ดีจากวานิลลา Cygwin หากคุณไม่คำนึงถึงน้ำหนักที่เพิ่มขึ้น

MinGW-w64

Mingw-w64 แสดงสิ่งต่อไปนี้:

  1. เปลือกทุบตี
  2. จำนวนสาธารณูปโภค Linux ที่เหมาะสม
  3. toolchain สำหรับการพัฒนา SW เพื่อสร้างแอปที่จะทำงานโดยไม่มีเลเยอร์ความเข้ากันได้ของ Linux (หรืออย่างน้อยหนึ่งตัว)

MinGW คือการกระจายซอฟต์แวร์เป็นหลักและเป็นแพลตฟอร์มการสร้างสำหรับ Windows โดยเฉพาะอย่างยิ่งมันเป็นพอร์ต Windows ของเครื่องมือคอมไพเลอร์ GNU เช่น GCC, make, bash และอื่น ๆ มันมีเครื่องมือ GNU ในจำนวนที่พอใช้และเลเยอร์ความเข้ากันได้ของ Unix ที่น้อยที่สุด

ความแตกต่างที่สำคัญระหว่าง Mingw-w64 และ Cygwin นั้นมีความสำคัญ: Cygwin มีจุดมุ่งหมายเพื่อให้ชั้นความเข้ากันได้ของ POSIX ที่สมบูรณ์ซึ่งประกอบด้วยการใช้งานการเรียกและไลบรารีระบบ Unix ที่สำคัญทั้งหมด ประสิทธิภาพเป็นรองสำหรับความเข้ากันได้ MinGW มีจุดมุ่งหมายเพื่อประสิทธิภาพดังนั้นมันจะไม่ให้ POSIX APIs บางอย่างซึ่งไม่สามารถใช้งานได้ง่ายและ / หรือเร็วพอใน Windows เป้าหมายหลักของ MinGW ก็คือนักพัฒนา S / W อย่างไรก็ตามผู้ใช้ที่ไม่เป็นทางการอาจสนุกกับเชลล์และวัตถุประสงค์ทั่วไปรวมถึงสาธารณูปโภค

MSYS2และGit สำหรับ Windows

MSYS2 จัดเตรียมสิ่งต่อไปนี้:

  1. เปลือกทุบตีและอาคาร Mintty
  2. จำนวนสาธารณูปโภค Linux ที่เหมาะสม
  3. ตัวจัดการแพคเกจบรรทัดคำสั่งที่มีคุณสมบัติครบถ้วนเพื่อติดตั้งโปรแกรมระบบปฏิบัติการ
  4. ชิ้นส่วนจากทั้ง Cygwin และ MinGW เพื่อสนับสนุนการสร้างแอปพลิเคชันไม่ว่าจะมีหรือไม่มีเลเยอร์ความเข้ากันได้ของ Linux ที่ครอบคลุม
  5. ที่เก็บซอฟต์แวร์และตัวจัดการแพคเกจ (Pacman) ซึ่งทำให้ง่ายต่อการติดตั้งใช้งานสร้างและพอร์ตซอฟต์แวร์บน Windows

MSYS2 นั้นส่วนใหญ่เป็นการแจกจ่ายซอฟต์แวร์และแพลตฟอร์มการสร้างสำหรับ Windows เช่น MinGW แต่มันรวมทั้งทางของ Cygwin และทางของ MinGW คุณสามารถใช้ MSYS2 ที่จะสร้าง"โปรแกรม MinGW"หรือ"โปรแกรม MSYS2" ลิงค์ในภายหลังไปยังเลเยอร์ความเข้ากันได้ของ MSYS2 (msys-2.dll) ซึ่งตัวเองติดตามการพัฒนาเลเยอร์ความเข้ากันได้ของ Cygwin อย่างใกล้ชิดด้วยการเพิ่ม / แก้ไขเล็กน้อย ที่เก็บของ 2 โครงการนั้นไม่เกี่ยวข้องกันอย่างสมบูรณ์ ดังนั้นแม้ว่าทั้ง MSYS2 และ Cygwin จะให้grep.exeพวกเขาอาจมีรุ่นที่แตกต่างอย่างสิ้นเชิง

Git สำหรับ Windowsเป็นอย่างใดอย่างหนึ่งเพียง MSYS2 กับคอมไพล์ที่ติดตั้งหรืออย่างน้อยก็หนักอยู่บนพื้นฐานของ MSYS2 มันมีเชลล์ (ทุบตี) เทอร์มินัล (Mintty) และตัวจัดการแพ็กเกจ (pacman) เดียวกัน ดูเหมือนว่าจะเป็นวิธีที่ได้รับความนิยมมากที่สุดในการทำให้ Git ที่โดดเด่นทำงานบน Windows และคุณจะได้รับสภาพแวดล้อม Unix ที่ดี

ระบบย่อย Windows สำหรับ Linux (WSL)

WSL แก้ปัญหาเดียวกันโดยใช้วิธีที่แตกต่างอย่างสิ้นเชิง คุณเรียกใช้รหัสเดียวกันกับที่คุณรันบนระบบ Linux บน WSL ซึ่งขัดขวางการเรียกเคอร์เนลและแปลเป็นการเรียกเคอร์เนลของ windows (ซึ่งตรงกันข้ามกับ Wine) แน่นอนการแปลไม่สามารถที่สมบูรณ์แบบ แต่ไมโครซอฟท์ droped เตือนเบต้า เนื่องจาก WSL ไม่สามารถใช้งานได้บน Windows Server ก่อนปี 2018 ฉันไม่ได้มองมันมากขนาดนั้น อย่างไรก็ตามคุณจะได้รับ bash shell ที่ดีกับสารพัด CLI ส่วนใหญ่ที่คุณคาดหวังว่าจะพบในการติดตั้ง Ubuntu ในสต็อก Microsoft ระบุอย่างเป็นทางการว่า"WSL ไม่ได้มีเป้าหมายเพื่อสนับสนุน GUI เดสก์ท็อปหรือแอปพลิเคชัน"อย่างไรก็ตามมีคำแนะนำอย่างไม่เป็นทางการเกี่ยวกับวิธีการทำ ดูเหมือนว่าขณะที่สิ่งต่าง ๆ เกิดขึ้นในขณะนี้ (ต้นปี 2561) ข้อเสียเปรียบหลักของ WSL มีดังนี้: a) การเรนเดอร์หน้าจอและการเข้าถึงดิสก์ช้ามาก b) คุณไม่ควรแก้ไขไฟล์ WSL (Linux) จาก Windows c) มันทำงานบน Windows 64 บิตเท่านั้น นี่เป็นการเปรียบเทียบที่เก่า แต่ดีกับ cygwin (โปรดทราบว่า Rich Turner เป็นสมาชิกของทีม WSL และเขาได้โพสต์ข้อมูลที่เป็นประโยชน์มากมายเกี่ยวกับ WSL)

พื้นดินทั่วไป

ยกเว้นจาก WSL เครื่องมือส่วนใหญ่ข้างต้นใช้เทคโนโลยีร่วมกันจำนวนมาก (ไลบรารี, ไฟล์เรียกทำงาน, แนวคิด) ตัวอย่างเช่นเปลือก bash ที่มาพร้อมกับ MinGW ขึ้นอยู่กับ msys-2.dll ซึ่งตัวเองเป็นทางแยกของ cygwin.dll ใช่แล้วมีที่ว่างมากมายสำหรับความสับสน :-)

ตัวเลือกเพิ่มเติม

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

Scoopเป็นผู้จัดการแพคเกจบรรทัดคำสั่งสำหรับโปรแกรมข้ามแพลตฟอร์มที่รู้จักกันดีรวมถึงเครื่องมือ GNU จำนวนมาก มันดาวน์โหลดแพคเกจที่รวบรวมไว้ล่วงหน้า มันไม่ได้ให้ทั้งเชลล์และเทอร์มินัลแต่ทำงานภายใต้ windows 'cmd.exe (ซึ่งมีข้อ จำกัด ทั้งหมด แต่ยังมีความเข้ากันได้เต็มรูปแบบกับโปรแกรมคอนโซลของ windows ดั้งเดิม) นอกจากนี้ยังไม่มีชุดคอมไพเลอร์ (แต่แน่นอนว่าคอมไพเลอร์และเครื่องมือในการพัฒนาเป็นแพ็คเกจทั่วไปที่คุณสามารถติดตั้งได้ด้วยสกู๊ป) โปรแกรมจำนวนมากที่ Scoop ติดตั้งมาโดยตรงจากโครงการ MinGW / MSYS หรือถูกสร้างขึ้นโดยใช้เครื่องมือของพวกเขา

ตัวเลือกมากขึ้น

วิธีการแก้ปัญหาการร้องไม่ทำงานและฉันไม่เคยทดสอบ แต่ดูเหมือนพวกเขาจะทำงานให้ผู้อื่น:

Gow (Gnu บน Windows) เป็นทางเลือกที่มีน้ำหนักเบาสำหรับ Cygwin โดยไม่มีเชลล์ มันใช้ตัวติดตั้ง Windows ที่สะดวกสบายซึ่งติดตั้งแอปพลิเคชั่น Linux โอเพ่นซอร์สที่มีประโยชน์ประมาณ 130 รายการที่รวบรวมเป็นไบนารี win32 ดั้งเดิมและพร้อมใช้งานผ่าน windows 'cmd.exe มันถูกออกแบบให้มีขนาดเล็กที่สุดเท่าที่จะเป็นไปได้ (ประมาณ 10 MB)

UnxUtils & GnuWin32 : UnxUtilsคือชุดของพอร์ตของยูทิลิตี้เหมือน GNU Unix ทั่วไปสำหรับ Win32 ดั้งเดิมโดยมีไฟล์ปฏิบัติการขึ้นอยู่กับ Microsoft C-runtime msvcrt.dll เท่านั้น คุณต้องดาวน์โหลดส่วนหลักและอัปเดตบางอย่าง GnuWin32มีรุ่นที่ใหม่กว่า UnxUtils แต่ต้องการไฟล์ที่รองรับ (เช่น DLLs)

MSYSและMinGWดูเหมือนจะได้รับการจำหน่ายแล้วโดย MSYS2 และ MinGW-W64 ดังนั้นผมจึงไม่เคยมองไปที่พวกเขา

ปัญหาทั่วไปบางอย่างใน Cygwin & MSYS2

เกี่ยวกับอาคารผู้โดยสาร

Mintty เป็นเครื่องที่ใช้ใน Cygwin, MSYS2 และอนุพันธ์ของพวกเขา สิ่งหนึ่งที่ควรระวังคือหากคุณใช้งานโปรแกรมคอนโซลเนทิฟ windows มันไม่ได้เป็นการแทนที่คำสั่งที่ไม่เจ็บปวดของ Windows Command Prompt ในขณะที่โปรแกรมที่มีการส่งข้อความแบบธรรมดามักใช้งานได้ดีส่วนการโต้ตอบและแบบเต็มหน้าจอมักจะมีปัญหา อ่านเพิ่มเติมเกี่ยวกับหน้าบ้าน mintty ของและยังอ่านรายการ "บางโปรแกรมคอนโซลพื้นเมืองไม่ทำงานเมื่อเรียกใช้จาก Git ทุบตี" ในGit สำหรับ Windows คำถามที่พบบ่อย ข้อความนั้นมีคำแนะนำนี้ที่ต้องทำเมื่อคุณประสบปัญหาเช่นนี้:

มีหลายวิธีในการแก้ไขปัญหาเหล่านี้:

  • เรียกใช้โปรแกรมที่มีปัญหาโดยใช้ยูทิลิตี้winpty สิ่งนี้ช่วยให้คุณสามารถใช้เทอร์มินัล nicer mintty ได้ แต่อาจกลายเป็นเรื่องไม่สะดวกหากคุณต้องการวิธีแก้ปัญหาสำหรับหลาย ๆ โปรแกรม
  • [ใช้ cmd.exe] และกำหนดค่าสำหรับ "แก้ไขด่วน" ขนาดที่เหมาะสมและเลื่อนกลับและแบบอักษรยูนิโค้ดที่เหมาะสม คุณจะต้องใช้ชีวิตร่วมกับองค์ประกอบอื่น ๆ ของ [cmd.exe]
  • ติดตั้งและใช้Conemu

ปัญหาอื่น ๆ

สิ่งสำคัญสองประการที่ควรคำนึงถึงคือ:

  1. มีการแลกเปลี่ยนระหว่างอำนาจกับปัญหาการแก้ไขข้อบกพร่องอย่างหนัก ยิ่งโซลูชันมีประสิทธิภาพมากเท่าไหร่สิ่งต่าง ๆ มากขึ้นก็อาจผิดพลาดได้แม้ในลักษณะที่จะไม่เกี่ยวข้องกับเลเยอร์ Linux ของคุณในตอนแรก

  2. หากคุณไม่มีประสบการณ์ Linux มากมายอย่าใช้โซลูชันที่ทรงพลังเช่น Cygwin / MSYS2 / MinGW

UnxUtils และ GnuWin32 มีพลังน้อยที่สุด แต่ก็มีโอกาสน้อยที่ทำให้คุณปวดหัว Cygwin และที่คล้ายกันจะอยู่ด้านบนของแถบพลังงานและปวดหัว Cmder อยู่ตรงกลาง ดังนั้นเมื่อคุณต้องการโซลูชั่นที่ทรงพลังที่สุดให้นอนหลับพักผ่อนอย่างเต็มที่และมีสมาธิอย่างเต็มที่ หลีกเลี่ยงการใช้โซลูชันที่ทรงพลังขณะทดสอบสิ่งใหม่และอาจไม่เสถียร อย่าลืมว่าโซลูชันความซับซ้อนระดับกลางเช่น cmder นั้นไม่สะอาดสะอ้าน

ปัญหาของคำสั่ง Linux ที่เกิดเงาหน้าต่างเป็นสาเหตุของปัญหาในการดีบักยากในโซลูชันเช่น Cygwin / MSYS2 / MinGW นี่คือตัวอย่าง: ฉันมีไฟล์. bat ที่ใช้คำสั่ง timeout เมื่อทำงานภายใต้ Cygwin จะล้มเหลวเนื่องจากการหมดเวลาเป็นคำสั่ง Linux แต่มีไวยากรณ์แตกต่างกัน หลังจากฉันพบปัญหาฉันพบว่าฉันสามารถเพิ่ม PATH = ... ที่ด้านบนของไฟล์. bat เพื่อให้แน่ใจว่าคำสั่ง windows มีลำดับความสำคัญ แต่ฉันได้รับข้อผิดพลาด"ไม่สนับสนุนการเปลี่ยนเส้นทางอินพุต" ที่เป็นความลับยิ่งขึ้นและถูกตัดสินเพื่อหาวิธีแก้ไขก่อนที่จะหาเหตุผล

นี่คือตัวอย่างของปัญหากับ cmder ผมทำงาน Windows รุ่นของพร้อมเพรียงภายใต้ Cmder และภายใต้เงื่อนไขพิเศษบางอย่างที่มันถูกแขวนอยู่กับข้อผิดพลาดอย่างไม่มี คำสั่งเดียวกันทำงานอย่างสมบูรณ์แบบเสมอภายใต้ cmd.exe สิ่งที่ตลกก็คือมันทำงานได้อย่างสมบูรณ์แบบภายใต้ Cygwin (อันที่จริงถ้าคุณมีชื่อไฟล์ Unicode ขั้ว Cygwin จะดีกว่า cmd.exe เพราะ cmd.exe มักจะแสดงข้อความ Unicode ผิดรูปแบบ)

เกี่ยวกับคู่มือนี้

ในช่วง 2017-05 ฉันไม่สบายที่ไม่เข้าใจความแตกต่างของเครื่องมือข้างต้นแม้ว่าฉันจะใช้บางอย่างมานานแล้ว (ส่วนใหญ่ CygWin และ cmder แต่ไม่เคยมีเพื่อการพัฒนา) ดังนั้นฉันจึงใช้เวลาสองสามชั่วโมงเพื่อสำรวจภูมิประเทศ คู่มือนี้เป็นผลลัพธ์ของบันทึกย่อที่ฉันเก็บไว้ ฉันไม่ใช่ผู้เชี่ยวชาญในสนาม แต่ฉันพยายามหาข้อมูลที่เกี่ยวข้องทั้งหมดอ่านด้วยตาที่สำคัญและนำเสนอชิ้นส่วนที่สำคัญที่สุดอย่างชัดเจน โปรดแสดงความคิดเห็นหากสิ่งที่ดูเหมือนผิดและฉันจะทำให้ดีที่สุดเพื่อแก้ไข

ในที่สุดคำขอโทษสำหรับปัญหาศัพท์บางคำ: ในบางครั้งฉันใช้คำว่า Linux แทน UNIX หรือ POSIX ฉันรู้ว่าพวกเขาไม่เหมือนกัน แต่มันยากมากที่จะแยกความแตกต่างระหว่างพวกเขาเมื่อเข้าใกล้หัวข้อจากระยะไกลเช่น แม้ว่ามันจะไม่ยาก แต่ก็ต้องใช้เวลาที่ฉันไม่มี ;-)


2
นี่คือคำตอบที่ยอดเยี่ยมขอบคุณสำหรับการแบ่งปันการค้นพบและประสบการณ์ของคุณ
Daniel Sokolowski

คำตอบที่ครอบคลุม แต่มันpacmanไม่ใช่packman
Adrian Günter

วิธีนี้อาจไม่ใช่คำตอบที่ยอมรับได้ ขอบคุณสำหรับรายละเอียดทั้งหมดนี้
42.

10

ผมขอแนะนำให้คุณดาวน์โหลดและติดตั้งน้อยที่สุดชุดของMinGWและชุดที่น้อยที่สุดของ MSYS โปรแกรมติดตั้ง MinGW ให้ GUI ที่ง่ายสำหรับคุณในการเลือกแพ็คเกจที่คุณต้องการติดตั้ง หากสิ่งที่คุณต้องการคือ BASH การติดตั้งจะไม่ใช้เวลาเกินสองสามเมกะไบต์

UPDATE: ฉันย้ายไปที่MSYS2ซึ่งสูงกว่ามากและมีพอร์ตของเครื่องมือ ArchLinux pacman สำหรับการจัดการบรรจุภัณฑ์ ติดตั้ง MSYS2 มีทุกสิ่งที่คุณต้องการรวมทั้งจะใช้minttyซึ่งเหมาะอย่างยิ่ง


10

นอกจากนี้ยังมีคุกใช้ได้ที่ GitHub มันรวมตัวเองเป็นพรอมต์คำสั่งของ windows โดยใช้ตะขอห้องสมุด

จากคำอธิบายโครงการ:

Clink รวมเชลล์ Windows cmd.exe ดั้งเดิมเข้ากับคุณสมบัติการแก้ไขบรรทัดคำสั่งอันทรงพลังของไลบรารี GNU Readline ซึ่งให้ความสามารถในการเติมเต็มประวัติและความสามารถในการแก้ไขบรรทัดให้สมบูรณ์

(ดังนั้นจึงไม่มีคุณสมบัติทุบตี -a-a-programming-language หรือสารพัด Unix อื่น ๆ )

ฉันใช้ Linux ในที่ทำงานและพบว่าตัวเองแท็บเป็นบางครั้งใน cmd ซึ่งไม่เหมือนที่ฉันคาดหวังจาก Bash ด้วย Clink ฉันสามารถเอาชนะข้อบกพร่องเหล่านี้ได้

เมื่อเร็ว ๆ นี้ฉันยังค้นพบโครงการที่มีแนวโน้ม แต่ยังไม่สามารถ 'เรียกว่า' ทั้งหมดได้ที่เรียกว่าflinuxซึ่งเลียนแบบฟังก์ชันของระบบ Linux และให้ระบบบางชนิดที่อยู่ด้านบน (ปัจจุบันใช้ Arch Linux)


Clink เปลี่ยนภาษาได้จริงหรือไม่หรือปรับปรุงเฉพาะบางอย่างใน cmd.exe นี่ยังไม่ชัดเจนจากคำตอบทั้งหมด
Sarge Borsch

มันช่วยให้คุณสามารถใช้คุณสมบัติเชลล์ * nix ปกติบางอย่างเช่นการค้นหาแบบย้อนกลับโดยใช้ Ctrl + R, คำสั่ง PATH การค้นหาเสร็จสมบูรณ์เป็นต้น
Andreas

ดังนั้นจึงไม่ใช่การใช้ bash ใช่ไหม
Sarge Borsch

เอ่อไม่มี ส่วนขยายcmd.exeดังที่อธิบายไว้ในเว็บไซต์;)
Andreas

7

นอกจากสิ่งที่ faffaffaff กล่าวแล้วGit สำหรับ Windowsยังรวมถึง Bash และโปรแกรมบรรทัดคำสั่ง Linux ทั่วไปบางโปรแกรม (เช่นVim , sedและgawk ) ก็ขึ้นอยู่กับMSYS รุ่นของโปรแกรมนั้นเก่า แต่ตัวอย่างเช่น Bash เป็นรุ่น 3.1 Cygwinจะมียูทิลิตี้เวอร์ชันล่าสุดมากกว่านี้

ฉันยังใช้ConEmuเป็นเทอร์มินัลอีมูเลเตอร์ (ส่วนใหญ่ใช้สำหรับการเน้นไวยากรณ์ในกลุ่มหน้าแท็บและการวางสำเนาได้ง่ายขึ้น) console2เป็นอีกหนึ่ง terminal terminal emulator ที่เป็นที่นิยมแม้ว่าฉันจะไม่ได้ลอง


BTW: ConEmu ยังจดจำการติดตั้ง MSYS2 และอนุญาตให้มีการรวม Clink
Andreas

2

นี่เป็นหนึ่งในสิ่งแรกที่ฉันทำเมื่อตั้งค่าเครื่อง Windows ใหม่:

คอนโซลที่ใช้งานได้และทันสมัยใน Windows


3
ตรวจสอบให้แน่ใจว่าได้เพิ่มข้อความที่ตัดตอนมาจากลิงก์เพื่อป้องกันผลกระทบของลิงค์เน่า
oldmud0

1

ฉันเพิ่งลองกับBabunซึ่งรวม Cygwin ไว้ภายในแล้วก็มีรสชาติที่ดีสำหรับฉัน :)

ไฟล์ดาวน์โหลดมีขนาดใหญ่เล็กน้อยประมาณ 250 MB แต่การติดตั้งนั้นเรียบง่าย ไม่จำเป็นต้องกำหนดค่าอะไรและมันก็ใช้งานได้!


Babun รวม cygwin ทั้งหมดมันใหญ่จริงๆเมามัน กระบวนการติดตั้งค่อนข้างยุ่งเหยิง (ปัจจุบันไฟล์ zip ถูกบล็อกโดย chrome เป็นไฟล์อันตราย) แต่จนถึงที่สุดแล้วฉันก็พบว่าการเปลี่ยนเทอร์มินัล
Tombart

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