در این آموزش، دستور which لینوکس را شرح خواهیم داد؛ فرمان which لینوکس برای شناسایی موقعیت (مسیر اجرای) یک دستور اجرایی (همانند: ls، cd، ...) که پس از تایپ کردن نام آن دستور در ترمینال اجرا می‌شود، استفاده می‌گردد. فرمان which، دستوری که به‌صورت ورودی دریافت کرده است را در دایرکتوری‌های لیست شده در متغیر محیط PATH جستجو می‌کند.

 

PATH چیست؟

در لینوکس، PATH یک متغیر محیطی است که به پوسته و سایر برنامه‌های لینوکس می‌گوید که کدام دایرکتوری‌ها را برای فایل‌های اجرایی جستجو نماید. PATH شامل لیستی از مسیرهای مطلق دایرکتوری‌های حاوی فایل‌های اجرایی می‌باشد که با کاما جدا شده است.
برای مشاهده محتوای متغیر PATH موجود در سیستم‌عامل لینوکس شما، از دستور echo به همراه $PATH به‌عنوان یک آرگومان استفاده کنید:

echo $PATH

در این صورت خروجی چیزی شبیه به زیر خواهد بود:

نحوه استفاده از دستور which

ساختار دستور which به شرح زیر است:

which [OPTIONS] FILE_NAME...

به‌عنوان‌مثال، برای یافتن مسیر کامل فرمان ping، شما باید دستور زیر را تایپ کنید:

which ping

در این صورت خروجی چیزی شبیه به خطوط زیر خواهد بود:


شما می‌توانید بیش از یک ورودی نیز به دستور which ارائه دهید:

which netcat uptime

در این صورت خروجی شامل مسیرهای کاملی برای برنامه‌های اجرایی netcat وuptime خواهد بود:

جستجو از چپ به راست انجام می‌شود و در صورت یافتن بیش از یک تطابق در دایرکتوری‌های لیست شده در متغیر مسیر PATH، دستور which تنها مورد اول را چاپ می‌کند. برای چاپ همه تطابق‌ها، می‌توانید از گزینه -a استفاده کنید:

which -a touch

در این صورت، خروجی هر دو مسیر کامل فرمان touch را نشان می‌دهد:

معمولاً یکی از برنامه‌های اجرایی تنها یک پیوند برای دیگری است، اما در برخی موارد، شما ممکن است دو نسخه از یک دستور را در مکان‌های مختلف نصب کرده باشید و یا اینکه دو دستور کاملاً متفاوتی را با یک نام داشته باشید.

 

اقتباس از:

Linux Which Command