คำตอบนี้พยายามช่วยให้ผู้อื่นหลีกเลี่ยงการใช้เวลา 1-2 ชั่วโมงในการแก้ไขปัญหาและค่อยๆหาวิธีแก้ปัญหาที่แตกต่างกันสำหรับปัญหาทั่วไปเมื่อใช้ WSL สำหรับเทอร์มินัลใน VS Code ไม่ครอบคลุมถึงการติดตั้งแพ็กเกจเฉพาะ แต่เป็นแพ็กเกจทั่วไปที่อาจติดตั้งไม่ถูกต้องตามการอ้างอิงเมื่อติดตั้งสิ่งต่างๆที่ต้องพึ่งพาการมีอยู่และการแก้ไขการตั้งค่าทั่วไปที่เกี่ยวข้อง
สรุปขั้นตอน
- ติดตั้ง WSL แล้ว
- VS Code (หรือ IDE อื่น ๆ ) ที่กำหนดค่าสำหรับเทอร์มินัล
- ติดตั้ง NPM & แก้ไขเส้นทางใน. profile (อาจช่วยในเรื่องเครื่องมืออื่น ๆ )
- ติดตั้ง build-essential (ช่วยในเรื่องเครื่องมือที่ใช้ make / gcc / etc)
- VS Code Tasks โดยใช้ WSL
- พิเศษ
การเริ่มต้นและข้อกำหนด
- คุณต้องมีการติดตั้ง WSL (ซึ่งหมายความว่าคุณต้องใช้งานWindows 10 แบบ 64 บิตพร้อมการอัปเดตที่เหมาะสม) ทำตามคำแนะนำการติดตั้งหากยังไม่ได้ติดตั้ง สิ่งนี้จะต้องมีการรีบูต
VS Code Terminal Configuration
ทั้งCTRL+ ,แป้นพิมพ์ลัดหรือFile
→การPreferences
→การSettings
ในด้านบนขวาของหน้าต่างการแก้ไขให้แน่ใจว่าคุณกำลังทำงานอยู่ในบริบทที่ถูกต้องสำหรับคุณ: ทั้งตั้งค่าผู้ใช้หรือการตั้งค่าพื้นที่ทำงาน
ในแถบค้นหาการตั้งค่าพิมพ์ terminal.integrated.shell.windows
(หรืออะไรก็ได้ที่ทำให้คุณยาวพอ)
ค้นหาการตั้งค่าในไฟล์การตั้งค่าจริงใช้Edit
(วางเมาส์เหนือเส้นจะอยู่ทางซ้าย: บนหน้าจอสัมผัสโดยไม่ต้องใช้เมาส์คุณควรจะสามารถแตะทางด้านซ้ายของเส้นได้) แล้วเลือกReplace in Settings
ในบานหน้าต่างด้านขวาแก้ไขรายการที่สร้างในไฟล์ json ที่แก้ไข: แทนที่การตั้งค่าก่อนหน้าด้วย
"C:\\WINDOWS\\Sysnative\\bash.exe"
IDE อื่น ๆ : IntelliJ
เปิดการตั้งค่า / เครื่องมือ / เทอร์มินัลและตั้งค่าฟิลด์ "เส้นทางเชลล์" เป็น "C:\Users\USERNAME\AppData\Local\Microsoft\WindowsApps\ubuntu.exe"
ทำให้ WSL Ubuntu Bash Terminal ของคุณใช้งานได้สำหรับ dev
เมื่อคุณใช้CTRL+ `เพื่อเปิดเทอร์มินัลตอนนี้คุณควรมี bash terminal
หากนี่เป็นครั้งแรกที่คุณเรียกใช้ bash.exe คุณอาจถูกถามเกี่ยวกับการติดตั้ง Ubuntu ทำเช่นนั้น เมื่อการติดตั้งของคุณเสร็จสมบูรณ์ให้เลือกชื่อผู้ใช้และรหัสผ่านของคุณที่จะใช้ใน WSL Ubuntu สิ่งเหล่านี้ไม่จำเป็นต้องตรงกับบัญชี Windows ปัจจุบันของคุณและสิ่งสำคัญคือต้องทราบว่าจะไม่เปลี่ยนแปลงตามการเปลี่ยนแปลงรหัสผ่านของบัญชี Windows ของคุณ
เมื่อเสร็จแล้วคุณจะมีพรอมต์คำสั่ง bash ในเทอร์มินัลของคุณ
โปรดทราบว่าไม่เหมือนกับ git-bash บน Windows นี่คือสภาพแวดล้อมที่แยกจากกัน ในขณะที่สามารถใช้เพื่อเปิดตัวซอฟต์แวร์ Windows ภายนอกตัวเองได้ แต่คุณจะต้องใช้แพ็คเกจ Ubuntu ที่เหมาะสมเพื่อเรียกใช้ภายในเทอร์มินัลจริง
ปัจจุบัน WSL ไม่ได้มาพร้อมกับทุกสิ่งที่คุณอาจคาดหวังหรือคุ้นเคยและบางสิ่งอาจขัดแย้งกับซอฟต์แวร์ที่คุณโหลดใน Windows ตามการตั้งค่าโปรไฟล์เริ่มต้น
อัปเดตและคอมไพล์
หมายเหตุ:ฉันจะบันทึกสิ่งเหล่านี้เป็น sudo สำหรับผู้ที่ต้องการเพียงชิ้นเดียว แต่ตัวเลือกหนึ่งในตอนเริ่มต้นคือการsudo su
เรียกใช้คำสั่งต่อไปนี้แทนโดยไม่ใช้ sudo
ตรวจสอบให้แน่ใจว่าแพ็คเกจ Ubuntu ของคุณเป็นรุ่นล่าสุด:
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade
sudo apt autoremove
ติดตั้งคอมไพล์:
sudo apt-get install git
Node.js และ NPM
หากคุณมี Node หรือ NPM ที่โหลดใน Windows อยู่แล้วการรันใน Ubuntu อาจมีปัญหาเนื่องจากปัญหาเส้นทาง ดังนั้นคุณต้องติดตั้ง Ubuntu เวอร์ชันเนทีฟและตรวจสอบให้แน่ใจว่าใช้แทนได้
ครั้งแรกที่ติดตั้งกับ Node.js NPM (ทางเลือก: ติดตั้ง NVMและใช้เพื่อติดตั้ง node.js)
หลังจากติดตั้งการรันคำสั่ง npm อาจล้มเหลวตัวอย่างเช่นnpm -v
อาจให้คุณ:
: not foundram Files/nodejs/npm: 3: /mnt/c/Program Files/nodejs/npm:
: not foundram Files/nodejs/npm: 5: /mnt/c/Program Files/nodejs/npm:
/mnt/c/Program Files/nodejs/npm: 6: /mnt/c/Program Files/nodejs/npm: Syntax error: word unexpected (expecting "in")
นี่คือเนื่องจากมีปัญหา pathing ด้วยโซลูชั่นที่ค่อนข้างตรงไปตรง โดยใช้โปรแกรมแก้ไข CLI ที่คุณชื่นชอบ (เช่นnano
, vim
, emacs
, cat
และsed
... ฯลฯ ) เปิดของคุณ~/.profile
nano ~/.profile
หมายเหตุ: อย่าพยายามที่จะแก้ไขไฟล์ลินุกซ์โดยใช้เครื่องมือของ Windows (ขอบคุณความคิดเห็นของ @ david-c-rankinสำหรับลิงก์อย่างเป็นทางการพร้อมข้อความสีแดงตัวหนาที่อธิบายสิ่งนี้) หากคุณไม่ต้องการใช้โปรแกรมแก้ไข CLI สำหรับสิ่งนี้ในเทอร์มินัลโปรดดูลิงก์ด้านล่างของโพสต์นี้ เพื่อให้ GUI ทำงานได้
ปัจจุบันตัวแปร bash PATH เริ่มต้นใน WSL คือ
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
ซึ่งกำลังฉีดพา ธ windows หลังจากสองไดเร็กทอรีไบนารีแรก น่าเสียดายที่สิ่งนี้ไม่ส่งผลให้ / usr / bin ถูกใช้ก่อนที่ windows จะติดตั้ง npm ดังนั้นให้เพิ่มก่อน $ PATH สุดท้าย:
PATH="$HOME/bin:$HOME/.local/bin:/usr/bin:$PATH"
บันทึกจากนั้นโหลดเทอร์มินัลใหม่หรือเพียงแค่ซอร์สไฟล์พา ธ
source ~/.profile
โครงสร้างที่จำเป็น
หากคุณใช้สิ่งใดก็ตามที่ต้องใช้การคอมไพล์หรือใช้ make ก็แทบจะรับประกันได้ว่าคุณจะต้องติดตั้งสิ่งเหล่านี้ ดังนั้นหากคุณไม่ได้ติดตั้งขณะติดตั้ง node.js ให้ทำเช่นนั้น ง่ายกว่ามากที่จะใช้แพ็คเกจที่จำเป็นในการสร้างแทนที่จะพยายามติดตั้งทุกอย่างแยกกัน
โปรดทราบว่าแพ็กเกจเช่น Compass ซึ่งใช้ Ruby FFI จะล้มเหลวหากไม่มีสิ่งเหล่านี้ หากคุณประสบปัญหาในการติดตั้งและเรียกใช้เครื่องมืออย่างถูกต้องตรวจสอบให้แน่ใจว่าคุณมี gcc และทำการติดตั้งแล้วอาจเป็นจุดเริ่มต้นที่ดี
sudo apt-get install -y build-essential
เรียกใช้งานโดยใช้ Ubuntu
โปรดทราบว่าหากคุณใช้งาน VS Code ของ VS Code เพื่อเรียกใช้งานบิลด์โดยค่าเริ่มต้นระบบจะยังคงรันโดยใช้ระบบย่อยของ Windows แทนระบบ Ubuntu บางครั้งนี่อาจเป็นสิ่งที่คุณต้องการ แต่ถ้าคุณเพิ่งติดตั้ง grunt-cli ใน Ubuntu เสร็จแล้วไม่ใช่ Windows ก็อาจจะไม่ใช่
VS Code เพิ่งมีการอัปเดต 2017 พฤษภาคมเกี่ยวกับวิธีการทำงานของ Tasks ที่อนุญาตให้ตั้ง Task Runner เป็น Terminal ได้ตั้งค่าวิ่งงานเป็นขั้วนี่เป็นวิธีที่ง่ายที่สุดในการโยกย้ายงาน
เพียงแค่ตั้งค่า
"runner": "terminal",
ในของคุณtasks.json
และคุณทำเสร็จแล้ว (สมมติว่าคุณมีเครื่องมือที่เหมาะสมทั้งหมดที่คุณพยายามเรียกใช้ในขณะนี้ติดตั้งใน WSL Ubuntu)
นี่เป็นแบบพกพามากโดยไม่ต้องมีการเปลี่ยนแปลงระหว่างระบบที่ทำหรือไม่มี WSL หรือกับ OS อื่น ๆ และเป็นวิธีที่ฉันอยากจะแนะนำ
ในขณะนี้วิธีนี้จะสร้างTERMINAL
อินสแตนซ์แท็บอื่น(เข้าถึงได้จากเมนูแบบเลื่อนลง) คุณยังคงสามารถตั้งค่าผู้เฝ้าดูที่เหมาะสมได้ แต่หมายความว่าจะไม่นั่งอยู่บนOUTPUT
แท็บอีกต่อไป
วิธีการแบบเก่าสามารถเรียกใช้เชลล์ WSL Ubunutu Bash และแสดงขึ้นมาOUTPUT
และเกี่ยวข้องกับการเรียก bash.exe ด้วยอาร์กิวเมนต์ -c หรือใช้เชลล์สคริปต์ น่าเสียดายที่ไม่ได้เป็นความหมายเนื่องจากเรากำลังสร้างbash
คำสั่งและส่งผ่านสิ่งที่เราต้องการเรียกใช้เป็นอาร์กิวเมนต์แทน นอกจากนี้ยังหมายความว่ามันไม่สามารถพกพาไปยังระบบอื่น ๆ ได้อย่างรวดเร็ว
คุณสามารถใช้ตำแหน่งเดียวกับที่คุณให้ VS Code ก่อนหน้านี้สำหรับเทอร์มินัลเองC:\\WINDOWS\\Sysnative\\bash.exe
เป็นค่าสำหรับcommand
ตั้งค่าองค์ประกอบแรกของargs
อาร์เรย์เป็น-c
และส่วนที่สองเป็นคำสั่งที่คุณต้องการเรียกใช้ ( ให้เครดิตกับครึ่งหลังของคำตอบนี้ )
หรือคุณแทนสามารถเรียกใช้สคริปต์เชลล์เท่าที่เห็นนี่
บิตที่เป็นประโยชน์เพิ่มเติม
ต้องการเริ่ม VSCode ใน Windows จากบรรทัดคำสั่ง WSL Bashหรือไม่?
ต้องการมีอินเทอร์เฟซแบบกราฟิกสำหรับ WSL Ubuntu ของคุณหรือไม่? (สิ่งนี้จะช่วยให้คุณทำสิ่งต่างๆเช่นใช้ตัวแก้ไข Linux GUI สำหรับไฟล์ภายในระบบ Ubuntu เอง: อย่าแก้ไขโดยใช้เครื่องมือแก้ไขของ Windows ดูความคิดเห็น / หมายเหตุในส่วนบน npm)
ต้องการสร้าง (ดูส่วนด้านบนเกี่ยวกับการตั้งค่า VS Code Tasks อย่างถูกต้องสำหรับ WSL) และดีบักทั้งหมดภายใน WSL Ubuntuหรือไม่ (แสดงวิธีการโดยใช้ gdb แต่pipeTransport
แนวคิดนี้สามารถใช้กับ debuggers อื่น ๆ ได้) (ให้เครดิตกับคำตอบนี้แต่ก่อนหน้านี้ยังมีวิธีการโดยใช้ local loopback ที่พิสูจน์ได้ว่ามีประโยชน์)