لزوار مدونتنا فقط احصل على 3 أشهر إضافية مجانًا + خصم 10% على الخطة الثلاثية السنوية مدونة YSBLOG10
احصل على الصفقة

شرح الأوامر في نظام لينكس مع أمثلة في عام 2026

الأمر which في لينكس يطبع المسار الكامل للملف التنفيذي الذي سيتم تشغيله عند كتابة أمر ما، وذلك بالبحث في الدلائل المدرجة في متغير البيئة $PATH. استخدم الأمر which للمباراة الأولى أو التي -أ لعرض جميع النتائج.

يُعدّ هذا الأمر مثاليًا للتحقق من الإصدارات، وحلّ تعارضات المسارات، وتصحيح أخطاء "الأمر غير موجود". إذا كنتَ جديدًا على نظام لينكس أو في إدارة الخوادم، فإنّ إتقان أمر `which` في لينكس سيوفر عليك الوقت ويمنع حدوث أخطاء في الإعدادات.

في هذا الدليل، ستتعرف على وظيفة الأمر which، وكيف يختلف عن البدائل مثل الأمر -v و whereis، وسترى أمثلة عملية من إدارة الخوادم في العالم الحقيقي مفيدة بشكل خاص لبيئات استضافة الويب.


ما هو الأمر "which" في نظام لينكس؟

الأمر الذي يخبرك المسار الدقيق للملف التنفيذي الذي سيقوم النظام بتشغيله لاسم أمر معين.

أي أمر في لينكس

يبحث في الدلائل في يقوم هذا الأمر بترتيب متغير البيئة $PATH، ويعيد أول تطابق (أو جميع التطابقات باستخدام الخيار -a). وهذا ضروري للتأكد من الملف التنفيذي الذي يتم تنفيذه فعليًا عند تثبيت إصدارات متعددة.

في مجال الاستضافة و سير عمل DevOpsمما يساعدك على تأكيد PHPيُعد إصدار Python أو Node.js أو Git الذي تستدعيه أمرًا بالغ الأهمية عندما تختلف المسارات لكل مستخدم أو بيئة افتراضية أو حاوية.

بناء الجملة والخيارات الشائعة

which [options] name [name ...]

الخيارات المستخدمة بكثرة (GNU which؛ قد تختلف الخيارات قليلاً بين التوزيعات):

  • -a, –all: عرض جميع الملفات التنفيذية المطابقة في $PATH.
  • –skip-alias / –skip-functions: تجاهل أسماء الصدفة المستعارة أو الوظائف (عند دعمها).
  • –read-alias / –read-functions: طباعة تعريفات الأسماء المستعارة/الدوال (ميزة GNU which).

لا يتم التعامل مع الأوامر المدمجة في الصدفة، والأسماء المستعارة، والوظائف بشكل متسق دائمًا عبر مختلف المنصات. وللتحقق من توافق الصدفة، غالبًا ما يكون استخدام الأمر -v أو type أكثر موثوقية.


أمثلة عملية على ذلك

1. ابحث عن مسار أمر ما

which ls
# /usr/bin/ls

which nginx
# /usr/sbin/nginx (example)

هذا يوضح الملف التنفيذي الذي سيتم تشغيله بالضبط عند كتابة الأمر.

2. عرض جميع النتائج المطابقة على طول $PATH

which -a python
# /usr/bin/python
# /usr/local/bin/python (example)

which -a php
# /usr/bin/php
# /usr/local/bin/php

في حال تثبيت عدة إصدارات، يُظهر الخيار -a ترتيب الدقة الكامل. وهذا أمر بالغ الأهمية عندما يظهر الإصدار الخاطئ أولاً في متغير البيئة PATH.

3. التحقق من عدة أوامر في وقت واحد

which git curl unzip
# /usr/bin/git
# /usr/bin/curl
# /usr/bin/unzip

والذي يُرجع رمز خروج غير صفري إذا لم يتم العثور على أمر واحد أو أكثر (مفيد في البرامج النصية).

4. تحذير بشأن الأسماء المستعارة والوظائف

# You may have an alias:
alias ll='ls -alF'

which ll
# Might print nothing or the ls path; behavior varies by system.

# Better:
type -a ll
# ll is aliased to `ls -alF`

لأنها ليست واجهة سطر أوامر مدمجة، فقد لا تفهم تمامًا الأسماء المستعارة أو الدوال. يُفضل استخدام الأمر type أو command -v للحصول على نتائج متوافقة مع واجهة سطر الأوامر.

5. والتي تختلف باختلاف sudo و PATH

which nginx
# /usr/sbin/nginx

sudo which nginx
# which: no nginx in (...root's PATH...)
# or a different path than your user

قد يستخدم الأمر sudo مسارًا مختلفًا للمستخدم الجذر، لذا قد يُنتج الأمر sudo which نتائج مختلفة أو فارغة. إذا كنت ترغب فقط في تشغيل الأمر which باستخدام مسارك الحالي ولكن بصلاحيات أعلى، فافعل ما يلي:

sudo env "PATH=$PATH" which nginx

نصيحة أمنية: توخ الحذر عند تعديل متغير PATH باستخدام sudo. استخدم مسارات صريحة في عمليات التشغيل الآلي كلما أمكن ذلك.


أي مقابل الأمر -v مقابل النوع مقابل أين

تساعد عدة أوامر في اكتشاف "ما الذي سيجري؟" لكنها تخدم أغراضًا مختلفة. إليك متى يُستخدم كل منها:

  • أيّ: يعثر على أول (أو جميع) الملفات التنفيذية في متغير البيئة PATH. مفيد جدًا لإجراء فحوصات سريعة للمسارات وحل تعارضات الإصدارات.
  • الأمر -v: متوافق مع معيار POSIX؛ يعرض كيفية تحليل الصدفة للاسم (يشمل ذلك الأوامر المدمجة، والدوال، والأسماء المستعارة، والملفات التنفيذية). يُفضل استخدامه في البرامج النصية المحمولة.
  • النوع -أ: يتضمن Bash/Zsh ميزة مدمجة توضح ما إذا كان الاسم اسمًا مستعارًا أو دالة أو أمرًا مدمجًا أو ملفًا، وتعرض جميع المواقع.
  • أين هو؟ يبحث في المواقع القياسية عن الملفات التنفيذية، والمصدر، وصفحات الدليل. لا يرتبط بـ $PATH؛ وهو أوسع نطاقًا وأقل دقة فيما يتعلق بترتيب التنفيذ.
# Portable and reliable in scripts:
command -v nginx >/dev/null 2>&1 && echo "nginx is available"

فهم متغير البيئة $PATH وترتيب التنفيذ

$PATH عبارة عن قائمة مفصولة بنقطتين رأسيتين يبحث النظام في عدد من الدلائل للعثور على الملفات التنفيذية، ويستخدم هذا الترتيب لتحديد الأمر الذي سيتم تنفيذه أولاً.

echo $PATH
# /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin (example)

لتحديد أولوية دليل مخصص مفيد عند تثبيت إصدار أحدث PHP أو Node.js - أضفه إلى PATH:

# Temporary (current shell session)
export PATH="/opt/php8.2/bin:$PATH"

# Persist for a user (Bash)
echo 'export PATH="/opt/php8.2/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

بعد تغيير PATH، تحقق باستخدام -a للتأكد من صحة ترتيب الحل.


رموز الخروج واستخدامها في البرامج النصية

GNU الذي يُرجع عادةً:

  • 0: تم العثور على جميع الأوامر المحددة.
  • 1: لم يتم العثور على بعض الأوامر.
  • 2: خيارات غير صالحة أو حدث خطأ جسيم.
# Example: Ensure required tools exist before deployment
if which git >/dev/null 2>&1 && which rsync >/dev/null 2>&1; then
  echo "Deps OK"
else
  echo "Missing required tools" >&2
  exit 1
fi

لضمان قابلية النقل بين أنظمة POSIX، يُنصح غالبًا باستخدام الأمر -v:

if command -v php >/dev/null 2>&1; then
  php -v
else
  echo "PHP not installed or not in PATH" >&2
fi

استكشاف الأخطاء وإصلاحها

تم العثور على الأمر ولكنه غير قابل للتنفيذ

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

عدم تطابق ذاكرة التخزين المؤقت للتجزئة (باش)

قد يقوم نظام التشغيل بتخزين مواقع الأوامر مؤقتًا. إذا قمت باستبدال ملف تنفيذي، فامسح ذاكرة التخزين المؤقت.

hash -r

يختلف السلوك مع sudo أو مع الصدفات التي لا تتطلب تسجيل الدخول

يمكن أن تؤدي استخدامات تسجيل الدخول مقابل عدم تسجيل الدخول، بالإضافة إلى سياسات sudo، إلى قيم PATH مختلفة.

مقارنة البيئات:

printf "User PATH: %s\n" "$PATH"
sudo env | grep -E '^PATH='

حالات استخدام الاستضافة في العالم الحقيقي

إختر الصحيح PHP لواجهة سطر الأوامر و cron

غالباً ما تستضيف الخوادم عدة خوادم PHP الإصدارات (مثال: 7.4، 8.1، 8.2). استخدم الأمر `which -a php` لعرض الملفات الثنائية المتاحة وتحديث متغير PATH، أو استخدم المسار المطلق في crontab لتجنب تشغيل الملفات الخاطئة. PHP الإصدار.

التحقق من صحة استخدام pip مقابل pip3 أثناء عمليات النشر

في بيئات بايثون، قد يشير pip إلى بايثون 2 بينما يستهدف pip3 بايثون 3. تأكد من ذلك باستخدام الأمر `which pip and which pip3`، أو اعتمد على الأمر `python3 -m pip` لضمان تثبيت المفسر الصحيح للتبعيات.

تأكد من مسارات Node و npm في CI/CD

عند استخدام مدير إصدارات Node (nvm) أو عمليات التثبيت المخصصة، تحقق من أي عقدة وأي npm داخل خطوات البناء لضمان استخدام الإصدار المتوقع أثناء تجميع الأصول.

At YouStableنوصي بتحديد مسارات النظام (PATHs) بشكل صريح في عمليات التشغيل الآلي، واستخدام الأمر `which -a` أثناء التحقق من صحة البناء لمنع اختلاف الإصدارات بين بيئتي الاختبار والإنتاج. manageتحافظ حزم استضافة المواقع على اتساق مسار النظام (PATH) بين المستخدمين لتقليل المفاجآت في مهام Cron. SSHوسياقات خادم الويب.


الأمان وأفضل الممارسات

  • لا تضع ابدا الدليل الحالي (.) في بداية PATH؛ يمكن أن يؤدي ذلك إلى تمكين تنفيذ الأوامر عن طريق الخطأ أو بشكل ضار.
  • فضل المسارات المطلقة في البرامج النصية ذات الامتيازات (مثل /usr/bin/rsync) لتجنب اختطاف PATH.
  • عند استخدام sudo، افهم ما هو PATH المطبق؛ راجع /etc/sudoers وإعدادات secure_path.
  • استخدم الأمر -v في البرامج النصية لضمان قابلية النقل والوضوح عند التحقق من توافر الأوامر.

الأسئلة الشائعة

ما وظيفة الأمر "which" في نظام لينكس؟

يبحث هذا الأمر في الدلائل المدرجة في متغير البيئة PATH، ويطبع مسار الملف التنفيذي الذي سيتم تشغيله عند إدخال اسم أمر معين. استخدم الأمر `which -a` لعرض جميع النتائج مرتبةً حسب ترتيب البحث.

لماذا لا يُظهر الأمر "which" أي شيء عند تنفيذه؟

إما أن الأمر غير مُثبّت، أو أنه غير موجود في متغير البيئة PATH، أو أنه اسم مستعار/دالة لا يتعرف عليها النظام. جرّب الأمر -v أو اكتب -a. تحقق أيضًا من الصلاحيات ونوع الصدفة (تسجيل الدخول أو بدون تسجيل الدخول).

ما الفرق بين "which" و "whereis"؟

يستخدم الأمر $PATH لعرض ما سيتم تنفيذه؛ بينما يقوم الأمر whereis بفحص المواقع القياسية للعثور على الملفات التنفيذية، وملفات المصدر، وصفحات الدليل. يُعدّ الأمر whereis أكثر شمولاً ولكنه لا يُشير إلى ترتيب التنفيذ.

أيٌّ من هذه الخيارات متوافق مع معيار POSIX؟ هل يجب عليّ استخدام الأمر -v بدلاً من ذلك؟

وهو أمر غير محدد في معيار POSIX ويتصرف بشكل غير متسق عبر الأنظمة. يُعد الأمر -v متوافقًا مع معيار POSIX ومفضلًا في البرامج النصية المحمولة، خاصةً عندما تحتاج إلى اكتشاف الأسماء المستعارة والوظائف والوظائف المدمجة بشكل موثوق.

كيف يمكنني إصلاح متغير PATH بحيث يعثر على الإصدار الصحيح؟

أضف مسار مجلد bin المطلوب إلى متغير PATH، ثم تحقق من ذلك باستخدام الأمر which -a. مثال: export PATH=”/opt/php8.2/bin:$PATH”. احفظ التغييرات في ملف تعريف shell الخاص بك (مثلاً، ~/.bashrc) وأعد تشغيل shell.
يُعد إتقان أمر "which" في نظام لينكس أساسياً لعمليات الخادم النظيفة والمتوقعة.

استخدمه مع الأمر -v و type لفهم ما سينفذه طرفية الأوامر بالضبط، وللحفاظ على بيئاتك متسقة وآمنة. إذا كنت ترغب في منصة استضافة يتم فيها تكوين PATH والأدوات تلقائيًا، YouStableالصورة manageتم تصميم بيئات d من أجل الموثوقية والوضوح.

شارك عبر:

سانجيت تشوهان

سانجيت تشوهان مدوّن وخبير في تحسين محركات البحث، يُكرّس جهوده لمساعدة المواقع الإلكترونية على النمو بشكل طبيعي. يُشارك استراتيجيات عملية ونصائح قابلة للتطبيق ورؤى قيّمة لزيادة عدد الزيارات وتحسين ترتيب المواقع وتعزيز التواجد الإلكتروني.

اترك تعليق

لن يتم نشر عنوان بريدك الإلكتروني. الحقول المشار إليها إلزامية *

انتقل إلى الأعلى