منبع اصلی نوشتار زیر در این لینک قرار دارد

پیدا کردن مسیر دستورها در یونیکس ها

زمانی که در یک سیستم عامل یونیکسی و حتی ویندوزی دستوری را از خط فرمان اجرا می کنید، سیستم عامل مسیرهای درون متغیر محیطی PATH را بررسی می کند که آیا مسیری برای پیدا کردن دستور در میان مسیرهای متغیر PATH وجود داشته باشد. اما با استفاده از دستورهایی می توانید مسیر یک دستور را پیدا کنید.

در یونیکس ها چند دایرکتوری زیر به صورت پیشفرض فایل های دودویی (فایل های اجرایی) دستورها را نگه می دارند. این دایرکتوری ها عبارتند از:

  • bin/
  • usr/bin/
  • sbin/
  • usr/sbin/

ساختار سلسله مراتبی دایرکتوری ها در لینوکس

ممکن است مسیر منتهی به برخی از دستورهایی که کاربران غیر root هم می توانند آنرا اجرا کنند در محتوای متغیر PATH وجود نداشته باشد، بنابراین کاربر با اجرای دستور خطای Command not found را می بیند. به طور مثال در توزیع هایی مانند CentOS 7 و openSUSE 42.1 متغیر PATH کاربران عادی فاقد مسیر sbin/ است، بنابراین حتی با اینکه یک کاربر عادی می تواند دستور ifconfig را اجرا کند، ولی با اجرای دستور ifconfig خطای زیر نشان داده می شود.

Absolute path to ‘ifconfig’ is ‘/sbin/ifconfig’, so running it may require superuser privileges

بنابراین باید از مسیر مطلق (Absolute Path) به صورت زیر استفاده کنید.

sbin/ifconfig/

دستور which

از دستور which همراه با نام دستور برای پیدا کردن مسیر (محل ذخیره سازی) دستور استفاده می شود.

which ifconfig

اگر سیستم عامل در بین مسیرهای درون متغیر PATH نتواند مسیر دستور را پیدا کند خطای شکل زیر نشان داده می شود.

linux_find_cmd_path1

دستور whereis

برای پیدا کردن مسیر منتهی به یک دستور از دستور whereis به صورت زیر استفاده کنید. این دستور قطعا اگر مسیر دستور نصب شده را نشان می دهد.

whereis ifconfig

ifconfig: /sbin/useradd /usr/share/man/man8/useradd.8.gz



برچسب ها : , , , , , , , , , ,