git - كيف يمكنني استخدام Bash على Ubuntu على Windows(WSL) لمحطة VS Code الخاصة بي؟




visual-studio-code windows-subsystem-for-linux (2)

بينما تتعامل أسئلة أخرى حول كيفية استخدام أشياء مثل git-bash ، فإن إعطاء WSL الجديد تدورًا لأن محطة VS Code ليست هي نفسها: إنها تتيح لك الوصول إلى bash التي تعمل على نظام فرعي فعلي لـ Ubuntu Linux ، بدلاً من git- محطة باش تعمل على نظام ويندوز الفرعي.

إذن كيف يمكننا أن نجعلها تعمل كمحطة VS Code ، وخاصة كيف نجعلها تعمل كمحطة بيئة تطوير وظيفية؟

على عكس git-bash ، فإن هذا الأمر ليس بالأسف بهذه السهولة ، لأن تكوين Ubuntu Linux في WSL يمكن أن يوفر بعض getchas ، مثل محاولة NPM (وفشل) للتشغيل من دليل Windows Program Files بسبب التفاعل بين WSL و Windows نفسه في شروط المسار ، وبعض الحزم مثل Compass فشل بسبب ما ليس بالضرورة أسباب واضحة على الفور لشخص غير معتاد على تطوير لينكس. ما هي طريقة بسيطة للحصول على بيئة محطة WSL موثوقة لرمز VS حيث سيتم تشغيل الأدوات الأكثر استخدامًا عند تثبيتها عبر apt-get أو npm ؟


إذا كنت تريد استخدام zsh ، ابحث عن مسار ubuntu1804.exe أو ubuntu1604.exe.

في حالتي

"terminal.external.windowsExec": "C:\\Users\\asdf\\AppData\\Local\\Microsoft\\WindowsApps\\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\\ubuntu1804.exe",
"terminal.integrated.shell.windows": "C:\\Users\\asdf\\AppData\\Local\\Microsoft\\WindowsApps\\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\\ubuntu1804.exe",

تسعى هذه الإجابة إلى مساعدة الآخرين على تجنب قضاء 1-2 ساعات في استكشاف الأخطاء وإصلاحها وإيجاد حلول متباينة ببطء للمشاكل الشائعة عند استخدام WSL للجهاز في VS Code. إنه لا يغطي تثبيت حزم محددة ، بل هو حزم شائعة قد لا يتم تثبيتها بشكل صحيح كتبعيات عند تثبيت أشياء تعتمد على وجودها ، وعلى إصلاح الإعدادات العامة ذات الصلة.

ملخص الخطوات

  • تثبيت WSL
  • تم تكوين رمز VS (أو IDE الآخر) من أجل الجهاز الطرفي
  • تثبيت NPM وإصلاح المسار في .profile (قد يساعد في استخدام الأدوات الأخرى)
  • بنية أساسية مثبتة (تساعد في أي أدوات تستخدم make / gcc / etc)
  • مهام VS Code باستخدام WSL
  • إضافات

الابتداء والمتطلبات

  • يجب أن يكون لديك WSL مثبتة . (مما يعني أنه يجب تشغيل Windows 10 بت 64 بت ، مع التحديثات المناسبة) ، اتبع دليل التثبيت إذا لم يكن مثبتًا بالفعل. هذا سوف يتطلب بعض إعادة تمهيد.

تكوين المحطة الطرفية رمز VS

إما CTRL + ، اختصار لوحة المفاتيح ، أو FilePreferences Settings

في الجزء العلوي الأيسر من نافذة التحرير ، تأكد من أنك تعمل في السياق الصحيح لك: إما إعدادات المستخدم أو إعدادات مساحة العمل .

في شريط البحث عن الإعدادات ، اكتب terminal.integrated.shell.windows (أو ما يمنحك وقتًا طويلاً بما يكفي)

ابحث عن الإعداد في ملف الإعدادات الفعلي ، استخدم " Edit (الماوس فوق الخط ، سيكون على اليسار: على شاشة تعمل باللمس بدون ماوس ، يجب أن تكون قادراً على النقر على يسار السطر) ، وحدد " Replace in Settings

في الجزء الأيسر ، قم بتعديل الإدخال الذي تم إنشاؤه في ملف json المعدل: استبدل الإعداد السابق بـ

"C:\\WINDOWS\\Sysnative\\bash.exe"

معرفات أخرى: IntelliJ

افتح الإعدادات / الأدوات / المحطة الطرفية واضبط حقل "مسار شل" على "C:\Users\USERNAME\AppData\Local\Microsoft\WindowsApps\ubuntu.exe"

جعل WSL Ubuntu Bash Terminal الوظيفية لديف

عند استخدام CTRL + ` لفتح الجهاز ، يجب أن يكون لديك الآن محطة bash.

إذا كانت هذه هي المرة الأولى التي تقوم فيها بتشغيل 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")

ويرجع ذلك إلى مشكلة المسار مع حل واضح إلى حد ما . باستخدام محرر CLI المفضل لديك (مثل nano و vim و emacs و cat و sed ... إلخ) ، افتح ملف التعريف ~/.profile الخاص بك

nano ~/.profile

ملاحظة: لا تحاول تحرير ملفات Linux باستخدام أدوات Windows . (بفضل تعليق @ david-c-Rankin على الرابط الرسمي مع النص الأحمر الغامق الذي يشرح هذا). إذا كنت لا ترغب في استخدام محرر CLI لهذا في المحطة ، فراجع الجزء السفلي من هذا المنشور للحصول على رابط حول كيفية للحصول على واجهة المستخدم الرسومية واحد على التوالي.

حاليًا ، متغير PATH bash الافتراضي في WSL هو

PATH="$HOME/bin:$HOME/.local/bin:$PATH"

وهو حقن مسار النوافذ بعد أول دليلين ثنائي. لسوء الحظ ، هذا لا يؤدي إلى استخدام / usr / bin قبل تثبيت windows npm ، لذا أضف ذلك قبل PATH $ النهائي:

PATH="$HOME/bin:$HOME/.local/bin:/usr/bin:$PATH"

احفظها ، ثم أعد تحميل الجهاز أو قم فقط بتوجيه ملف المسار

source ~/.profile

بناء ضرورية

إذا كنت تستخدم أي شيء يتطلب التحويل البرمجي أو يستخدمه بطريقة أخرى ، فمن شبه المؤكد أنك ستحتاج إلى تثبيت هذه ؛ إذا لم تقم بتثبيتها أثناء تثبيت node.js ، فقم بذلك. من الأسهل بكثير استخدام حزمة البنية الأساسية بدلاً من محاولة تثبيت كل شيء على حدة.

لاحظ أن الحزم مثل Compass التي تعتمد على Ruby FFI ستفشل بدون هذه. إذا كنت تواجه مشكلة في تثبيت الأداة وتشغيلها بشكل صحيح ، فتأكد من حصولك على gcc وتثبيت قد يكون مكانًا جيدًا للبدء.

sudo apt-get install -y build-essential

تشغيل المهام باستخدام أوبونتو

لاحظ أنه إذا كنت تستخدم task.json في VS Code لتشغيل مهام الإنشاء ، فسيظل يعمل افتراضيًا باستخدام نظام Windows الفرعي بدلاً من نظام Ubuntu. قد يكون هذا هو ما تريده أحيانًا ، ولكن إذا كنت قد انتهيت للتو من تثبيت grunt-cli في Ubuntu وليس Windows ، فمن المحتمل ألا يكون الأمر كذلك.

قام VS Code مؤخرًا بتحديث 2017 مايو لكيفية عمل المهام التي تسمح لها بتعيين عداء المهام ليكون الجهاز الطرفي . هذا هو أسهل طريقة لترحيل المهام.

ببساطة مجموعة

"runner": "terminal",

في tasks.json لقد انتهيت (على افتراض أن لديك كل الأدوات المناسبة التي تحاول تشغيلها الآن مثبتة في WSL Ubuntu).

هذا سهل الحمل للغاية ولا يتطلب أي تغييرات بين الأنظمة التي لديها أو لا تملك WSL أو أنظمة تشغيل أخرى ، وهي الطريقة التي أوصي بها.

اعتبارًا من اللحظة الحالية ، تفرز هذه الطريقة مثيل علامة تبويب TERMINAL آخر (يتم الوصول إليه من القائمة المنسدلة). لا يزال بإمكانك إعداد مراقبي مناسبين ، لكن هذا يعني أنه لم يعد يجلس على علامة التبويب OUTPUT .

الأسلوب القديم قادر على استدعاء shell WSL Ubunutu Bash وإظهاره في OUTPUT ، ويشمل إما استدعاء bash.exe باستخدام الوسيطة -c أو باستخدام برنامج نصي shell. لسوء الحظ ، ليست دلالة ، لأننا نجعل أمرنا bash ما نريد تشغيله كحجة بدلاً من ذلك. هذا يعني أيضًا أنها ليست محمولة بالسرعة على الأنظمة الأخرى.

يمكنك استخدام نفس الموقع الذي أعطيته VS Code C:\\WINDOWS\\Sysnative\\bash.exe نفسه ، C:\\WINDOWS\\Sysnative\\bash.exe كقيمة command

عيّن العنصر الأول من مجموعة args كـ -c والثاني كالأمر الذي تريد تشغيله ( ائتمان في النصف الثاني من هذه الإجابة ).

بدلاً من ذلك ، يمكنك بدلاً من ذلك تشغيل برنامج نصي shell كما هو موضح هنا .

بت إضافية مفيدة

هل تريد بدء تشغيل VSCode في نظام التشغيل Windows من سطر أوامر WSL Bash ؟

هل تريد الحصول على واجهة رسومية لـ WSL Ubuntu ؟ (سيتيح لك ذلك القيام بأشياء مثل استخدام محرر واجهة المستخدم الرسومية Linux للملفات داخل نظام Ubuntu نفسه: لا تقم بتحريرها باستخدام أدوات تحرير Windows ، راجع التعليقات / الملاحظة في قسم npm)

هل تريد إنشاء (راجع الجزء أعلاه عند إعداد مهام VS Code بشكل صحيح لـ WSL) وتصحيح الأخطاء بالكامل داخل WSL Ubuntu ؟ (يوضح هذا كيفية القيام بذلك باستخدام gdb ، ولكن يمكن استخدام مفهوم pipeTransport مع مصححات أخطاء أخرى) (الفضل في هذه الإجابة ، ولكن السابقة قبل ذلك توفر أيضًا طريقة تستخدم الاسترجاع المحلي التي قد تكون مفيدة)





windows-subsystem-for-linux