Terminal: دعم مسارات لينكس لـ "دليل التشغيل" لتوزيعات WSL

تم إنشاؤها على ٨ مايو ٢٠١٩  ·  38تعليقات  ·  مصدر: microsoft/terminal

  • رقم إصدار Windows الخاص بك: Microsoft Windows [Version 10.0.18362.86]

  • ماذا تفعل وماذا يحدث:
    تعيين دليل البدء لـ wsl في profiles.json لا يجعله يشير إلى الدليل الصحيح.

  • خذ التكوين أدناه: -
{
        "startingDirectory": "C:/Users/joshj/AppData/Local/Packages/CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc/LocalState/rootfs/home/tackyunicorn",
        "guid": "{a2785f8e-72c9-4550-b406-697388644902}",
        "name": "Ubuntu",
        "colorscheme": "MonokaiVivid",
        "historySize": 9001,
        "snapOnInput": true,
        "cursorColor": "#FFFFFF",
        "cursorHeight": 25,
        "cursorShape": "vintage",
        "commandline": "wsl.exe",
        "fontFace": "Inconsolata for Powerline",
        "fontSize": 10,
        "acrylicOpacity": 1,
        "useAcrylic": true,
        "closeOnExit": true,
        "padding": "10, 10, 10, 10",
        "icon": "ms-appdata:///roaming/ubuntu.png"
}

ينتج عن هذا بدء تشغيل wsl في المجلد الجذر
issue1

  1. في هذا التكوين: -
{
        "startingDirectory": "/home/tackyunicorn",
        "guid": "{a2785f8e-72c9-4550-b406-697388644902}",
        "name": "Ubuntu",
        "colorscheme": "MonokaiVivid",
        "historySize": 9001,
        "snapOnInput": true,
        "cursorColor": "#FFFFFF",
        "cursorHeight": 25,
        "cursorShape": "vintage",
        "commandline": "wsl.exe",
        "fontFace": "Inconsolata for Powerline",
        "fontSize": 10,
        "acrylicOpacity": 1,
        "useAcrylic": true,
        "closeOnExit": true,
        "padding": "10, 10, 10, 10",
        "icon": "ms-appdata:///roaming/ubuntu.png"
}

ينتج عن هذا بدء تشغيل wsl في مجلد مستخدم Windows
issue2

  • ما هو الخطأ / ماذا يجب أن يحدث بدلاً من ذلك:
    لم يتم تطبيق إعداد الملف الشخصي startingDirectory بشكل صحيح على ملف تعريف wsl
Area-Settings Area-TerminalControl Help Wanted Issue-Feature Product-Terminal

التعليق الأكثر فائدة

يبدو أنه يتوقع مسارات Windows ولكن تمرير مسارات WSL fs ضمن AppData لا يعمل مباشرة. استخدام مسار UNC الجديد يناسبني:
"startingDirectory":"//wsl$/Ubuntu/home/cem/src" -> ~/src

وكذلك الحال بالنسبة لمواقع Windows العادية:
"startingDirectory":"C:/wd" -> /mnt/c/wd

ال 38 كومينتر

يبدو أنه يتوقع مسارات Windows ولكن تمرير مسارات WSL fs ضمن AppData لا يعمل مباشرة. استخدام مسار UNC الجديد يناسبني:
"startingDirectory":"//wsl$/Ubuntu/home/cem/src" -> ~/src

وكذلك الحال بالنسبة لمواقع Windows العادية:
"startingDirectory":"C:/wd" -> /mnt/c/wd

همم. ربما ينبغي أن نضيف إعدادًا يشير إلى أن دليل البدء هو مسار wsl. في الوقت الحالي ، نقوم فقط بتعيين دليل العمل الخاص بتطبيق العميل الذي بدأناه يدويًا ، لذلك علينا أن نعرف على وجه التحديد أن الملف الشخصي كان يحاول أن يكون wsl ، وضبط منطقنا للتمرير في دليل العمل.

سيكون أحد الاختراقات السهلة داخل ملف wsl ~/.bashrc ، أضف السطر
cd ~

تم حل المشكلة.

سيكون أحد الاختراقات السهلة داخل ملف wsl ~/.bashrc ، أضف السطر
cd ~

تم حل المشكلة.

هذه أيضًا طريقة رائعة للحصول على سلوك غريب وغير متوقع في كل شيء آخر يستخدم bash على جهازك. :ابتسامة:

هذه الطريقة هي القليل من العمل. يمكننا تحليل اسم التوزيع من الأمر الموجود في الملف الشخصي بحيث يمنحنا wsl.exe -d Ubuntu "Ubuntu" ، ثم نمرره إلى Profile::EvaluateStartingDirectory . ثم ، إذا فشل ، قبل تعيينه على %userprofile% يمكننا تقييم \\WSL$\[distributionName][directory] ومعرفة ما إذا كان هذا مسار دليل صالح.

أو يمكننا جعل الطريقة طريقة غير ثابتة واستخلاص القيمة من _commandline .

تحرير: أدرك الآن أن هذا لن ينجح. من المحتمل ألا يكون خادم P9 قد بدأ ، وإذا كان كذلك ، فلن يتم تحميل جميع التوزيعات كمشاركة متاحة ضمن مسار UNC.

@ sandeepkv93 - هذا الاختراق ليس الأفضل. عند العمل في VS Code وتريد فتح محطة WSL داخل دليل مشروعك ، فإن هذا سيمنع ذلك. بالتأكيد سوف يسبب مشاكل أخرى أيضا

الحل الخاص بي

"commandline" : "wsl.exe ~  -d WLinux"

لقد قمت للتو بتحرير /etc/passwd بعد إنشاء مستخدم جديد ليكون الدليل الرئيسي لمستخدم Windows الخاص بي /c/Users/MikeLloyd وقمت بتعيين startingDirectory إلى ~ في ملف التعريف الخاص بي. json. إنه يعمل بالنسبة لي كما هو متوقع في 18965.1005.

الحل الخاص بي

"commandline" : "wsl.exe ~"

ماذا لو أردت تعيين الدليل الافتراضي إلى دليل في C:؟
جربت "commandline" : "wsl.exe /mnt/c/Programming -d Ubuntu-18.04" وأدلة أخرى ، مع أو بدون /mnt/c/ ، مع أو بدون علامات اقتباس مفردة وبدون حظ.

LeoLozes توضح المشاركة الثانية في هذا الموضوع كيفية القيام بما تريده بالضبط.

في حالتي ، إنها تعمل بهذه الطريقة
"startingDirectory": "//wsl$/Ubuntu-18.04/home/username"

نجحت كل من الحلول البديلة wsl.exe ~ -d <distro> و //wsl$/home/<username> بالنسبة لي ، ولكن سيكون من الجيد لو تم تفسير startingDirectory بواسطة WSL بدلاً من Windows. على سبيل المثال ، يجب أن يعمل "startingDirectory": "$HOME/projects" فقط.

سيكون من الجيد أن يقوم Windows Terminal بتحويل المسار. لقد اتبعت # 1060 متوقعًا بدء تشغيل wsl الخاص بي بسرعة ، لكنه لا يعمل ، لأن مستكشف Windows يقوم دائمًا بتمرير المسار الأصلي إلى Terminal.

أصلح هذه المشكلة مع

"startingDirectory": "//wsl$/Ubuntu-18.04/home/myname"

في Microsoft Windows [Version 10.0.18363.592] ، الإصدار 0.8.100910.0

طريقتي لبدء WSL دائمًا على $ HOME:
قم بإنشاء ارتباط wt.exe ،
C: \ Users \ YOURNAME \ AppData \ Local \ Microsoft \ WindowsApps \ wt.exe wsl.exe ~ -d Ubuntu
وقم فقط بتثبيته في قائمة البداية الخاصة بي ، واحتفظ بـ "startDirectory" في الملف الشخصي على أنه فارغ

إذا لم تمرر "دليل البدء" إلى "wsl.exe" ، فسيبدأ دائمًا من دليلك الحالي.

الحل هو إنشاء ملف تعريف جديد يبدأ سطر الأوامر wsl.exe ~ . أحدث إصدار في متجر MS.

{
            "acrylicOpacity" : 1,
            "closeOnExit" : true,
            "colorScheme" : "Campbell",
            "commandline" : "wsl.exe ~",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 12,
            "guid" : "{*********************************}",
            "historySize" : 9001,
            "icon" : "ms-appx:///ProfileIcons/{0caa0dad-35be-5f56-a8ff-afceeeaa6101}.png",
            "name" : "Ubuntu home",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : "%USERPROFILE%",
            "useAcrylic" : true
},

سهل التصليح
"startDirectory": "// wsl $ / Ubuntu / home /

@ troy-mac الذي سيبدأ حرفياً في الدليل "home" ، وليس الدليل الرئيسي _your_. يرجى الاطلاع على الإجابات أعلاه لحلول عمل لا حصر لها ( مثال )

أنا أستخدم Ubuntu والحل البديل الخاص بي هو:
"commandline" : "ubuntu.exe"

سهل التصليح
"startDirectory": "// wsl $ / Ubuntu / home /" ،

أنا لا أعرف حتى لماذا يعطون 👎🏻

شكرًا لقد فهمتها ... الشيء التالي الذي يحتاج إلى حل هو الكتابة فوق الملف /etc/resolv.conf. حاولت بعض الأعمال حول غير العمل

كيف أبدأ WSL في دليل معين؟

على سبيل المثال ، إذا كنت أريد أن أبدأ من ~/dev ماذا أكتب في الخاصية commandline ؟

لقد حاولت "commandline": "wsl.exe ~/dev" ، لكنني حصلت على خطأ كما يلي:

/bin/bash: /home/myname/dev: Is a directory

[process exited with code 126]

تعديل:
nvm. اكتشفها بالكتابة

"startingDirectory":"//wsl$/Ubuntu/home/myname/dev"

مع أحدث إصدار منذ يومين (تمت إعادة تسمية profile.json إلى settings.json) ، لا يعمل startingDirectory الآن على الإطلاق. لا يوجد اختلاف واحد في هذا الموضوع يعمل على الإطلاق بالنسبة لي ، هل يرى أي شخص آخر نفس الشيء؟

لقد نجح تعيين startingDirectory بالنسبة لي ، ولكن يبدو أنه يجب عليك وضعه في ملف التعريف الذي تستخدمه. على سبيل المثال ، Ubuntu:

            {
                "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
                "hidden": false,
                "name": "Ubuntu",
                "source": "Windows.Terminal.Wsl",
        "startingDirectory":"//wsl$/Ubuntu/home/me/dev"
            },

لدي 4 توزيعات wsl مثبتة ، Ubuntu ، Debian ، Kali-Linux و CentOS. عندما أستخدم الإعداد "startingDirectory": "\\\\wsl$\\<distroname>\\home\\jakob" في معظم الأحيان ، تحترم دبيان دليل البداية ولكن ليس دائمًا ، لا يحترم الآخرون. ومع ذلك ، عندما أفتح علامة تبويب ثانية مع واحدة من التوزيعات الثلاثة الأخرى ، فإنها تفتح دائمًا في ~ يبدو أن استخدام "startingDirectory": "//wsl$//<distroname>/home/jakob" لا يحدث فرقًا ولكن استخدام \\ أكثر موثوقية

تحرير: أقوم بتشغيل معاينة Insider build 19619 و wsl2. يبدو أنه عندما يتم تشغيل الأجهزة الافتراضية ، فإنها تحترم إعداد دليل البدء. إذا تم إيقاف الأجهزة الظاهرية وكان يجب أن تبدأ عند فتح علامة تبويب فإنها لا تفعل ذلك.

سهل التصليح
"startDirectory": "// wsl $ / Ubuntu / home /" ،

أنا لا أعرف حتى لماذا يعطون 👎🏻

يجب أن يكون / home / username not / home

فقط لتكرار شيء قيل بالفعل ، هذه هي الطريقة التي تحدد بها دليل البداية لمثيل WSL معين:

    "profiles": [
        {
            "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
            "hidden": false,
            "name": "Ubuntu",
            "source": "Windows.Terminal.Wsl",
            "fontFace": "Cascadia Code",
            "fontSize": 12,

            // THIS                 vvvvvvvvvvvv
            "commandline": "wsl.exe ~ -d Ubuntu"
        }
    ],

استبدل "Ubuntu" باسم التوزيعة الخاصة بك.

لدي 4 توزيعات wsl مثبتة ، Ubuntu ، Debian ، Kali-Linux و CentOS. عندما أستخدم الإعداد "startingDirectory": "\\\\wsl$\\<distroname>\\home\\jakob" في معظم الأحيان ، تحترم دبيان دليل البداية ولكن ليس دائمًا ، لا يحترم الآخرون. ومع ذلك ، عندما أفتح علامة تبويب ثانية مع واحدة من التوزيعات الثلاثة الأخرى ، فإنها تفتح دائمًا في ~ يبدو أن استخدام "startingDirectory": "//wsl$//<distroname>/home/jakob" لا يحدث فرقًا ولكن استخدام \\ أكثر موثوقية

تحرير: أقوم بتشغيل معاينة Insider build 19619 و wsl2. يبدو أنه عندما يتم تشغيل الأجهزة الافتراضية ، فإنها تحترم إعداد دليل البدء. إذا تم إيقاف الأجهزة الظاهرية وكان يجب أن تبدأ عند فتح علامة تبويب فإنها لا تفعل ذلك.

هذا بسبب عدم تهيئة // wsl $ / folder حتى يتم بدء مثيل wsl. لذلك لن يبدأ المثيل الأول في ~ ، ولكن سيبدأ المثيل الآخر في ~ لأن المثيل الأول بدأ // wsl $ / folder

@ troy-mac الذي سيبدأ حرفياً في الدليل "home" ، وليس الدليل الرئيسي _your_. يرجى الاطلاع على الإجابات أعلاه لحلول عمل لا حصر لها ( مثال )

antoineco أنا أستخدم Ubuntu (لست متأكدًا مما إذا كان هذا مهمًا) ولكنه يضعني في _my_ الدليل الرئيسي / الصفحة الرئيسية / Troymac ، لذا أحصل على النتائج التي كنت أبحث عنها ...

@ troy-mac لقد جربت للتو على Ubuntu ، ولم يحدث ذلك. من المحتمل أن يكون لديك توجيه آخر ، إما في ملف الإعدادات أو ملف bashrc الخاص بك ، ولكن هذا وحده لا _ لا_ يضعك في الدليل الرئيسي.

على أي حال ، كانت نقطتي الرئيسية هي أننا يجب أن نبقي هذا الموضوع خاليًا من المعلومات الخاطئة. تم اقتراح حل عملي ، دعنا نشجع المستخدمين على استخدامه بدلاً من مشاركة حيل بديلة غير دقيقة.

بالنسبة لي (ربما بسبب zsh) ، الحل البديل "commandline": "wsl.exe /mnt/d/workspace -d Debian" لا يعمل:

zsh:1: permission denied: /mnt/d/workspace

[process exited with code 126]

لكن "startingDirectory": "D:/workspace" بدون أي "commandline" يعمل بشكل جيد ، كما تم اقتراحه في البداية.

لا يوجد عالم يعمل فيه تحديد الدليل بعمل wsl /directory . سيؤدي ذلك _always_ (ليس فقط عند استخدام zsh!) إلى محاولة الصدفة تنفيذ الدليل ثم الخروج. هذا ليس ما تريده أبدًا.

أي تحديث على هذا؟

تضمين التغريدة سوف نتأكد من تحديث هذا الموضوع عندما يكون هناك. في غضون ذلك ، هل يمكنني أن أوصي بزر الاشتراك؟
image
بهذه الطريقة سيتم إخطارك بأي تحديثات لهذا الموضوع ، دون الحاجة إلى اختبار اتصال الجميع في هذا الموضوع ☺️

مرحبًا بكل ما أعرفه ، لقد تلقيت بعض الإعجاب بهذا الاقتراح الذي نشرته سابقًا ، لكنني قمت للتو بتثبيت WSL و Ubuntu-20.04 على نظام جديد وكل ما فعلته هو إضافة الأسطر أدناه إلى ملف settings.json الخاص بي وهو 100٪ عملت لإسقاطي في دليل منزلي. أنا لا أقول أنه سيعمل مع الجميع لأنني لست متأكدًا من أن المستخدمين قد اختبروا هذا بالفعل أم لا ، لكنه نجح بالنسبة لي على نظامين مختلفين مع كل من Ubuntu-20.04 و 18.04. أعتقد أنه أسهل شيء يجب تجربته أولاً ، وإذا لم يعمل من أجلك ، فجرّب بعض الاقتراحات الأخرى في هذا الموضوع.

"startDirectory": "//wsl$/Ubuntu-20.04/home/troy-mac"
"startDirectory": "//wsl$/Ubuntu-18.04/home/troy-mac"

أو استخدم اقتراح antoineco الذي قد يعمل طوال الوقت ...
"سطر الأوامر": "wsl.exe ~ -d Ubuntu"

@ troy-mac أنا أتحدث عن نفسي هنا ، لكن الإبهام لأسفل كان وسيلة لقول _ "تحذير أيها القارئ. الحل المقترح في هذه الرسالة لا يعمل مع الجميع ، يرجى الرجوع إلى الحل المقبول بدلاً من ذلك" _. لم تكن محاولة لطردك.

كما قلت ، "commandline": "wsl.exe ~ -d <distro_name>" (https://github.com/microsoft/terminal/issues/592#issuecomment-504947429) يعمل في أي حالة تقريبًا ، لذلك دعونا نتأكد من أن هذا الحل مرئي للأشخاص الذين يذهبون من خلال هذه المشكلة ، بدلاً من محاولة التوصل إلى حلول تقريبية جديدة.

عند تثبيت أوبونتو ، يمكنك استخدام ملفات

"startingDirectory":"\\\\wsl$\\[DISTRONAME]\\home\\[USERNAME]"

إذا لم تكن متأكدًا من معنى [DISTRONAME] ، فافعل:

  1. Win + R.
  2. \\ wsl $
  3. هاهنا

الآن سوف تحصل على مشاركة الملفات في مستكشف. الفوركس

image

ما عليك سوى اتباع المسار الذي تريد أن تبدأ منه عند فتح علامة تبويب جديدة في Windows Terminal. تذكر:

  1. أربع شرطات خلفية في البداية و
  2. شريحتان مائلتان في الخلف بين أسماء المجلدات

مثل:
image

عند إنشاء startingDirectory . أعد تشغيل Windows Terminal ، وأنت على ما يرام.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات