cargo: command not found — جوه VS Code بس
bash: cargo: command not foundالعَرَض
في التيرمنال العادي كل حاجة تمام:
$ cargo --version
cargo 1.97.1 (c980f4866 2026-06-30)وفي التيرمنال اللي جوه VS Code، نفس الأمر بالظبط:
bash: cargo: command not foundوغالباً rust-analyzer كمان مش شغال، وبيقول إنه مش لاقي الأدوات.
السبب
rustup بيثبّت كل حاجة في ~/.cargo/bin، وعشان الـ shell يلاقيها بيضيف السطر
ده لملف إعدادات الـ shell عندك (~/.profile أو ~/.bashrc أو ~/.zshenv):
. "$HOME/.cargo/env"الملفات دي بتتقرا لما الـ shell يبدأ. بس لما تفتح VS Code من أيقونة سطح المكتب، هو مش بيبدأ من shell — بيتشغّل من مدير النوافذ مباشرة، وبيورث المسار المحدود بتاع جلسة الرسوميات. التيرمنال اللي جواه بيورث المسار الناقص ده منه.
عشان كده الفرق مش عشوائي: كل حاجة مفتوحة من التيرمنال بتشوف cargo، وكل
حاجة مفتوحة من الأيقونة مش بتشوفه.
الحل
الحل الأول والأبسط: افتح المحرر من التيرمنال
cd ~/projects/hello
code .كده VS Code بيورث كل المسار من الـ shell اللي شغّله، وكل حاجة بتشتغل. النقطة في
code . معناها “افتح المجلد الحالي”.
خد بالك إن ده لازم يكون مجلد المشروع اللي فيه Cargo.toml مباشرة، وإلا هتقع في
مشكلة تانية.
الحل التاني: تأكد إن السطر موجود أصلاً
grep -r 'cargo/env' ~/.profile ~/.bashrc ~/.zshenv 2>/dev/nullلو مطلعش حاجة، ضيفه بنفسك:
echo '. "$HOME/.cargo/env"' >> ~/.profileوبعدين اقفل الجلسة وافتحها تاني — أو source ~/.profile لو عايز تجرّب على طول.
الحل التالت: خلّي الجلسة الرسومية نفسها تشوف المسار
على أغلب توزيعات لينكس، ~/.profile بيتقرا وقت تسجيل الدخول للجلسة الرسومية —
فالسطر اللي فوق بيكفي بعد إعادة تسجيل الدخول. لو مكفاش، ممكن تحط المسار في
إعدادات التيرمنال بتاع VS Code:
{
"terminal.integrated.env.linux": {
"PATH": "${env:HOME}/.cargo/bin:${env:PATH}"
}
}ده بيصلّح التيرمنال بس. rust-analyzer بياخد المسار من عملية VS Code نفسها،
فالحل الأول أشمل.
إزاي تتأكد إيه اللي حصل بالظبط
جوه تيرمنال VS Code:
echo $PATH | tr ':' '\n' | grep cargoلو مطلعش أي سطر، فالمسار فعلاً ناقص وده تأكيد للتشخيص. وقارنه بنفس الأمر في
التيرمنال العادي — هتلاقي /home/<user>/.cargo/bin موجود هناك.
ليه بيحصل ده
دي مش مشكلة في Rust ولا في VS Code. دي طريقة شغل متغير PATH على لينكس
وmacOS: كل عملية بتورث بيئتها من العملية اللي شغّلتها، ومفيش مكان واحد مركزي
بيتقرا للكل.
التطبيق المفتوح من الأيقونة أبوه هو مدير الجلسة الرسومية، مش الـ shell — فهو بيورث بيئة مختلفة تماماً، وأقل بكتير.
نفس الحكاية بتحصل مع أدوات تانية كتير بتتثبّت في مجلد المستخدم: nvm وpyenv
وrbenv كلهم بيقعوا في نفس المصيدة.
النقاش
لو عندك سؤال أو لقيت غلطة في الصفحة دي، اكتبها فيالنقاشات على GitHub. كل صفحة ليها موضوعها الخاص.