ด้วยการเปิดตัว Anniversary Update สำหรับ Windows 10, Microsoft ประกาศ ระบบย่อย Windows สำหรับ Linux (WSL) - วิธีการรัน Bash ดั้งเดิมที่แท้จริงบน Windows 10 ซึ่งรองรับการทำงานของไบนารี Linux ดั้งเดิม ทำได้โดยเรียกใช้อิมเมจ Ubuntu Linux ในโหมดผู้ใช้ที่ด้านบนของ Windows
ซึ่งหมายความว่าคุณสามารถเรียกใช้เครื่องมือบรรทัดคำสั่ง Linux เช่น ls
, grep
, top
และ chmod
เนื่องจากคุณใช้งาน Ubuntu ของแท้ภายใต้การรัน lsb-release -a
จะให้ผลลัพธ์ต่อไปนี้:
คุณสามารถใช้ apt-get
และเพื่อน ๆ ในการติดตั้งระบบสาธารณูปโภคเช่น vim
, git
, screen
, tmux
หรือแม้แต่เล่นเกมของ nethack:
อย่างไรก็ตามโปรดทราบว่าระบบนี้อยู่ในช่วงเบต้าและ ไม่ได้ มีไว้สำหรับปริมาณงานของเซิร์ฟเวอร์ มันเป็นเพียงเครื่องมือสำหรับนักพัฒนา (และผู้ที่ชื่นชอบ) เพื่อทดสอบแอปพลิเคชั่นที่ใช้งานเป็นศูนย์กลางบน Windows โดยไม่ต้องทำการดัดแปลงใด ๆ นี่ไม่ใช่เครื่องมือที่มีวัตถุประสงค์เพื่อเรียกใช้แอปพลิเคชัน Linux GUI หรือสภาพแวดล้อมเช่น Gnome หรือ KDE ถึงแม้ว่ามันจะเป็นไปได้เช่นกันกับการแฮ็กบางอย่าง ลองทำความเข้าใจก่อนว่าลองดูวิธีการทำงานของเชลล์ Linux ใน Windows 10
ระบบย่อย Windows สำหรับ Linux (WSL)
ตามเอกสารประกอบอย่างเป็นทางการ“ WSL เป็นชุดของส่วนประกอบที่ช่วยให้ Linux ELF64 ไบนารีพื้นเมืองสามารถเรียกใช้บน Windows” มันทำได้โดยการใช้อินเตอร์เฟสเคอร์เนล Linux เสมือนบนเคอร์เนล Windows NT นั่นคือมันไม่ได้ใช้รหัสใด ๆ จากเคอร์เนลลินุกซ์จริง - เมื่อใดก็ตามที่แอปพลิเคชันทำการเรียกระบบเฉพาะของ Linux (syscall) WSL จะแปลมันเป็น Windows syscall ที่เทียบเท่ากัน
ความแตกต่างจาก Virtual Machines และ Cygwin
ทีนี้ลองมาดูกันว่า Linux Bash Shell บน Windows 10 นั้นแตกต่างกันอย่างไรเมื่อเทียบกับเครื่องเสมือนและ Cygwin
เครื่องเสมือน
คุณอาจจะคิดว่า“ เอาละทำไมใช้มัน? ทำไมไม่ใช้ Linux VM ใน Windows เท่านั้น”
เมื่อเปรียบเทียบกับเครื่องเสมือน WSL ใช้ทรัพยากรน้อยลง นอกจากนี้ยังช่วยให้คุณทำงานกับไฟล์ของคุณได้ตามที่คุณต้องการบน Linux ในขณะที่ให้คุณเข้าถึงระบบไฟล์ Windows พื้นฐานได้อย่างสมบูรณ์โดยไม่ต้องพึ่งพาโฟลเดอร์แชร์หรือเครือข่ายแชร์
Cygwin
อีกวิธีหนึ่งที่ได้รับความนิยมในการใช้เครื่องมือ Linux / Unix ที่ได้รับความนิยมบน Windows คือ Cygwin ข้อแตกต่างที่ใหญ่ที่สุดระหว่างสองแนวทางคือ Cygwin ไม่ใช่วิธีการรันไบนารีลินุกซ์ดั้งเดิม บน Windows มันมีชุดของ GNU และเครื่องมือโอเพนซอร์ซซึ่งมีฟังก์ชั่น คล้าย กับการแจกจ่าย Linux บน Windows
ในทางกลับกัน เครื่องมือ WSL เป็น ไบนารีที่รวบรวมโดย Linux ELF-64 ที่ทำงานบน Windows ตัวอย่างเช่นการรันคำสั่ง apt-get install emacs
ใน WSL จะดาวน์โหลดและติดตั้งไฟล์เดียวกับการติดตั้ง Ubuntu 14.04 จากคลังเก็บของ Ubuntu อย่างเป็นทางการ
ผู้ใช้สิทธิ์และระบบไฟล์ใน WSL
ลำดับชั้นของระบบไฟล์
WSL ถูกติดตั้งภายใต้ไดเร็กทอรี %LocalAppData%\lxss\rootfs
ของผู้ใช้ปัจจุบัน สิ่งนี้เรียกว่า WSL Environment และทำหน้าที่เป็นไดเร็กทอรี Linux“ /
” (root) ตัวอย่างเช่นหากชื่อผู้ใช้ของคุณบน Windows เป็น beebom
ซ์รูทไดเร็กทอรีของ Linux จะอยู่ใน C:\Users\beebom\AppData\Local\lxss\rootfs.
ซึ่งหมายความว่าผู้ใช้ Windows แต่ละคนสามารถมีสภาพแวดล้อม WSL ของตนเองและสามารถเปลี่ยนแปลงได้เช่นแพ็คเกจซอฟต์แวร์ apt-get install
โดยไม่กระทบกับผู้ใช้ Windows รายอื่น
เป็นไปได้ที่จะเข้าถึงระบบไฟล์ Windows พื้นฐานใน WSL ไดรฟ์ทั้งหมดจะถูกติดตั้งภายใต้ /mnt.
ตัวอย่างเช่น C:\
ถูกเมาท์ภายใต้ /mnt/c
, D:\
ถูกเมาท์ภายใต้ /mnt/d
ฯลฯ
ผู้ใช้และสิทธิ์
เมื่อคุณติดตั้ง WSL เป็นครั้งแรกระบบจะแจ้งให้คุณสร้างผู้ใช้ Linux เริ่มต้นใหม่ ผู้ใช้นี้ไม่จำเป็นต้องมีชื่อเดียวกับผู้ใช้ Windows ปัจจุบันและถือเป็นเอนทิตีที่แยกจากกันโดยทั่วไป คุณสามารถสร้างผู้ใช้ Linux หลายคนควบคุมโดยผู้ใช้ Windows คนเดียว
เป็นไปได้ที่จะได้รับสิทธิ์พิเศษโดยใช้คำสั่ง sudo
โปรดทราบว่าการ root
ใน WSL จะส่งผลกระทบต่อสิทธิ์ของผู้ใช้ภายในระบบ Linux และระบบไฟล์เท่านั้นโดยจะไม่มีผลกระทบต่อสิทธิ์ของ Windows ที่ได้รับ ตัวอย่างเช่นเซสชัน WSL ที่มีสิทธิ์ผู้ดูแลระบบ Windows อาจ cd /mnt/c/Users/Administrator
ในขณะที่เซสชัน Bash ที่ไม่มีสิทธิ์ผู้ดูแลระบบจะเห็นการอนุญาตถูกปฏิเสธ การพิมพ์ sudo cd /mnt/c/Users/Administrator
จะไม่ให้สิทธิ์การเข้าถึงไดเรกทอรีของผู้ดูแลระบบเนื่องจากการอนุญาตถูก จำกัด โดย Windows
คุณสมบัติระบบไฟล์เฉพาะของ Linux
Linux เป็นระบบที่ คำนึงถึงขนาดตัว พิมพ์ นั่นหมายความว่า photo.png
และ Photo.png
ถือเป็นสองไฟล์ที่แตกต่างกัน แม้ว่า Windows จะไม่ คำนึงถึงขนาดตัว พิมพ์ ซึ่งหมายความว่าในขณะที่ photo.png
และ Photo.png
จะไม่ถือว่าเป็นไฟล์ที่แตกต่างกันสองไฟล์ แต่จะรับ รู้ถึง ความแตกต่างอย่างแน่นอน
WSL จัดการตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เหมือนกับบน Linux เป็นไปได้ที่จะสร้างสองไฟล์ที่มีชื่อแตกต่างกันไปตามตัวพิมพ์ใหญ่ - เล็กที่อยู่นอกสภาพแวดล้อม WSL อย่างไรก็ตามโปรดทราบว่าแอปพลิเคชัน Windows จำนวนมากไม่สามารถจัดการกับสถานการณ์ดังกล่าวและอาจไม่สามารถเปิดไฟล์หนึ่งหรือทั้งสองไฟล์
ในทำนองเดียวกัน การเชื่อมโยงสัญลักษณ์ ได้รับการสนับสนุนให้คุณใช้ระบบไฟล์ NTFS อย่างไรก็ตามลิงก์สัญลักษณ์จะทำงานเฉพาะภายใน WSL และไม่สามารถแก้ไขได้โดยแอปพลิเคชัน Windows อื่น ๆ
Linux ยังสนับสนุน อักขระพิเศษ เกือบทั้งหมดภายในชื่อไฟล์ในขณะที่ Windows มีข้อ จำกัด มากกว่า อย่างไรก็ตาม WSL อนุญาตให้ใช้อักขระพิเศษดังกล่าวได้หากพวกเขาถูก จำกัด ให้อยู่ในสภาพแวดล้อมของระบบ Linux
พร้อมที่จะรัน Linux Command Line บน Windows แล้วหรือยัง
นั่นคือวิธีที่ Ubuntu Bash หรือ Linux Bash Shell หรือที่เรียกว่าระบบย่อย Windows สำหรับ Linux ทำงานบน Windows 10 (พร้อมการอัปเดตครบรอบ) นอกเหนือจากการทำงานแล้วเรายังได้เรียนรู้ว่ามันแตกต่างและดีกว่าวิธีดั้งเดิมในการรันคำสั่งเฉพาะ Linux บน Windows ดังนั้นหากคุณต้องการใช้คำสั่ง Linux อยู่เสมอเริ่มต้นใช้งานและหากคุณมีคำถามความคิดเห็นหรือเคล็ดลับโปรดแจ้งให้เราทราบในส่วนความคิดเห็น