วิธีเรียกใช้โปรแกรม Windows จาก Bash Shell ของ Windows 10
ในการอัปเดตผู้สร้างตอนนี้ Bash shell ของ Windows 10 อนุญาตให้คุณเรียกใช้ไบนารีของ Windows และคำสั่ง Command Prompt มาตรฐานได้จาก Bash คุณสามารถรันทั้งโปรแกรม Linux และ Windows จาก Bash shell เดียวกันหรือแม้กระทั่งรวมคำสั่ง Windows ไว้ในสคริปต์ Bash.
สิ่งที่คุณต้องรู้
นี่คือรายละเอียดพื้นฐานที่คุณต้องรู้เกี่ยวกับคุณสมบัตินี้:
- บัญชีผู้ใช้: โปรแกรมที่เปิดตัวจาก Bash shell จะทำงานเหมือนกับเปิดตัวโดยบัญชีผู้ใช้ Windows ปัจจุบัน.
- สิทธิ์: โปรแกรมเหล่านี้จะมีสิทธิ์เหมือนกับกระบวนการ Bash.exe ดังนั้นหากคุณต้องการให้คำสั่งเหล่านี้มีสิทธิ์การเข้าถึงระดับผู้ดูแลระบบคุณจะต้องรัน Bash shell ในฐานะผู้ดูแลระบบ.
- ไดเรกทอรีการทำงาน: โปรแกรม Windows ใช้ร่วมกัน“ ไดเรกทอรีทำงาน” เช่นเดียวกับเปลือก Bash ดังนั้นหากคุณเรียกใช้คำสั่งที่แสดงเนื้อหาของไดเรกทอรีปัจจุบันมันจะแสดงรายการเนื้อหาของไดเรกทอรีการทำงานปัจจุบันใน Bash เชลล์ ใช้
ซีดี
คำสั่งเพื่อเปลี่ยนไดเรกทอรีทำงาน.
โดยที่ในใจเราลองมาดูวิธีการเรียกใช้โปรแกรม.
วิธีการเรียกใช้โปรแกรม Windows
ในการรันโปรแกรม Windows ให้ป้อนพา ธ ไปยังไฟล์. exe ของโปรแกรมในเชลล์ Bash โปรดจำไว้ว่าไดรฟ์ Windows C: มีให้ที่ / mnt / c ใน Bash สภาพแวดล้อม Bash นั้นคำนึงถึงขนาดตัวพิมพ์ดังนั้นคุณต้องระบุการใช้อักษรตัวพิมพ์ใหญ่ให้ถูกต้อง.
สมมติว่าคุณต้องการเปิดยูทิลิตี้ Ping ที่ C: \ Windows \ System32 \ PING.EXE คุณจะเรียกใช้คำสั่งต่อไปนี้:
/mnt/c/Windows/System32/PING.EXE
คำสั่งต่อไปนี้ใช้ไม่ได้เนื่องจาก Bash คำนึงถึงขนาดตัวพิมพ์:
/mnt/c/windows/system32/ping.exe
สิ่งนี้จะซับซ้อนกว่านี้เล็กน้อยหากพา ธ ประกอบด้วยอักขระที่ซับซ้อนเช่นช่องว่างและวงเล็บเหลี่ยมเช่นโฟลเดอร์ Program Files คุณต้องเว้นวรรค“ หลบหนี” วงเล็บและตัวอักษรที่ซับซ้อนอื่น ๆ โดยนำหน้าด้วยอักขระ“ \”.
ตัวอย่างเช่นสมมติว่าคุณต้องการเรียกใช้โปรแกรม Internet Explorer ที่ C: \ Program Files (x86) \ Internet Explorer \ iexplore.exe คุณจะต้องเรียกใช้คำสั่งต่อไปนี้ใน Bash:
/ mnt / c / Program \ Files \ \ (x86 \) / Internet \ Explorer / iexplore.exe
หมายเหตุ“ \” ก่อนอักขระช่องว่างและวงเล็บ อักขระเหล่านี้ต้อง“ หนี” หรือ Bash จะไม่รับรู้ว่าตัวละครเป็นส่วนหนึ่งของพา ธ ไฟล์.
วิธีการส่งผ่านอาร์กิวเมนต์ไปยังคำสั่ง
เปลือก Bash ส่งผ่านข้อโต้แย้งไปยังคำสั่งที่คุณดำเนินการโดยตรง.
ตัวอย่างเช่นหากคุณต้องการ ping example.com คุณจะเรียกใช้:
/mnt/c/Windows/System32/PING.EXE example.com
หรือหากคุณต้องการเปิดไฟล์โฮสต์ Windows ใน Notepad คุณจะเรียกใช้:
/mnt/c/Windows/System32/notepad.exe "C: \ Windows \ System32 \ drivers \ etc \ hosts"
คุณใช้เส้นทางของไฟล์ Windows มาตรฐานเมื่อผ่านเส้นทางของไฟล์ไปยังโปรแกรม Windows โดยตรง นั่นเป็นเพราะ Bash ผ่านการโต้เถียงโดยตรง Notepad.exe และโปรแกรม Windows อื่น ๆ คาดหวังเส้นทางของไฟล์ Windows.
วิธีการเรียกใช้คำสั่งในตัว
คำสั่ง Windows บางคำไม่ใช่ไฟล์. exe แต่สร้างไว้ในพรอมต์คำสั่งเอง ตัวอย่างเช่นนี้รวมถึง dir
คำสั่งตามปกติคุณอาจทำงานในพร้อมรับคำสั่ง ในการเรียกใช้คำสั่งดังกล่าวคุณจะต้องเรียกใช้ cmd.exe
ไบนารีที่เกี่ยวข้องกับพร้อมรับคำสั่งและส่งคำสั่งเป็นอาร์กิวเมนต์ด้วย / C เช่น:
/mnt/c/Windows/System32/cmd.exe / C คำสั่ง
ตัวอย่างเช่นเมื่อต้องการเรียกใช้ dir
คำสั่งที่สร้างไว้ในพรอมต์คำสั่งคุณจะเรียกใช้คำสั่งต่อไปนี้:
/mnt/c/Windows/System32/cmd.exe / C ผบ
วิธีเพิ่มไดเรกทอรีไปยังเส้นทาง
สภาพแวดล้อม Windows Services สำหรับ Linux ใช้งาน Windows ได้เช่นเดียวกับวิธีปฏิบัติต่อไบนารีของ Linux ซึ่งหมายความว่าคุณสามารถเพิ่มไดเรกทอรีที่มีไฟล์. exe ลงในพา ธ แล้วเรียกใช้ไฟล์. exe เหล่านั้นโดยตรง ตัวอย่างเช่นหากต้องการเพิ่มไดเรกทอรี System32 ลงในพา ธ ของคุณคุณต้องเรียกใช้:
ส่งออก PATH = $ PATH: / mnt / c / Windows / System32
จากนั้นคุณสามารถเรียกใช้ไฟล์ Windows .exe ที่อยู่ในโฟลเดอร์ System32 โดยตรงเช่น:
PING.exe example.com
notepad.exe
cmd.exe / C ผบ
วิธีการไพพ์เอาต์พุตของคำสั่งหนึ่งไปยังอีกคำสั่ง
เอาต์พุตของคำสั่ง Windows สามารถไพพ์ไปยังคำสั่ง Linux และในทางกลับกัน ตัวอย่างเช่นคุณสามารถใช้ ipconfig.exe - ทั้งหมด
คำสั่งเพื่อแสดงรายการรายละเอียดเกี่ยวกับอินเทอร์เฟซเครือข่ายของคุณและไพพ์ไปยัง Linux grep
คำสั่งเพื่อค้นหาผลลัพธ์ ตัวอย่างเช่นหากต้องการแสดงรายการข้อมูลทั้งหมดเกี่ยวกับการเชื่อมต่อของคุณและค้นหาส่วนที่ตรงกับ "ที่อยู่ IPv4" คุณจะต้องเรียกใช้:
/mnt/c/Windows/System32/ipconfig.exe -all | grep "ที่อยู่ IPv4"
นั่นคือกระบวนการพื้นฐาน คำสั่งเหล่านี้จะทำงานเมื่อรวมเข้ากับสคริปต์ Bash ดังนั้นคุณสามารถเขียนสคริปต์ Bash ที่รวมทั้งคำสั่ง Windows และยูทิลิตี้ Linux หากมันทำงานในเชลล์ Bash มันจะทำงานในสคริปต์ Bash.
และหากคุณต้องการใช้วิธีอื่นคุณสามารถใช้คำสั่ง“ bash -c” เพื่อเรียกใช้คำสั่ง Bash จากพรอมต์คำสั่ง Windows มาตรฐาน.