تنظیم دایرکتوری آغازین در Windows Terminal برای WSL
شروع مسیر آغازین از دایرکتوری home در wsl
چند وقتیه که به دلایلی مجبور شدم روی دسکتاپم به جای لینوکس دوباره از ویندوز استفاده کنم. چون خیلی از کارای مدیریتی رو روی لینوکس انجام میدادم و راستش کار با خیلی ابزارها روی لینوکس مخصوصا (داکر و کانتینرها) خیلی سرراستتر و بهتره پس مجبور شدم از WSL و Docker Desktop روی ویندوز استفاده کنم و ابونتو رو هم روی WSL نصب کنم. برای اینکه راحتتر بتونم به محیط خط فرمان دسترسی پیدا کنم Windows Terminal رو هم نصب کردم. با Windows Terminal میتونید بهصورت یکجا به CMD و PowerShell و WSL (زیرسیستم ویندوز برای لینوکس!) دسترسی داشته باشید. اولین چیزی که بعد از اینکه روی ویندوز ترمینال ابونتو رو باز کردم توجهمو جلب کرد این بود که به صورت پیشفرض مسیر آغازین روی mnt/c/Users/Siavash/ بود. حتما میدونید که وقتی توی یک سیستم عامل لینوکسی bash رو باز میکنید مسیر پیشفرض معمولاً چیزی مثل home/siavash/ هست. بنابراین احتمالاً شما هم مثل من میخواید که مسیر از دایرکتوری home توی لینوکس شروع بشه و نه پروفایل کاربریتون روی ویندوز.
رفع مشکل
قضیه اینجاست که WSL برای دسترسی ویندوز به فایلها و دایرکتوریهای لینوکسی یک Administrative Share با اسم $wsl ایجاد میکنه که میتونید با UNC Path از مسیر زیر پیداش کنید:
\\wsl$\Ubuntu\home\siavash\
پس برای حل مشکل بالا باید فایل setting.json رو توی Windows Terminal ویرایش کنید. برای این کار از قسمت بالای Windows Terminal روی فلش کلیک کنید و Settings رو باز کنید. توی پنجرهای که باز شده از قسمت پایین سمت چپ Open JSON file رو بزنید تا فایل settings.json باز بشه. حالا باید startingDirectory رو به مسیری که بالا گفتم تغییر بدید:
{
"bellStyle": "none",
"guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
"hidden": false,
"name": "Ubuntu",
"source": "Windows.Terminal.Wsl",
"startingDirectory": "\\wsl$\Ubuntu\home\siavash\"
}
حالا وقتی WSL رو توی Windows Terminal اجرا میکنید، از همون اول توی دایرکتوری home هستید.
نکته آخر اینکه ویندوز ترمینال مسیرهارو از دید ویندوز میفهمه، بنابراین اگر مسیرهارو طبق ساختار دایرکتوری لینوکس بهش بدید قطعاً کار نمیکنه. اگر سوالی داشتید میتونید توی قسمت نظرات واسم بنویسید.