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

نوع دستور های لینوکسی (یونیکسی)

دستور های لینوکسی (یونیکسی) به دو دسته کلی دستور های Internal و External تقسیم می شوند. دستور های Internal یا Build-in Commands آن دسته از دستور هایی هستند که توسط خود Shell و از درون آن اجرا می شوند. این دستور ها مستقیمن توسط خود شِل اجرا می شوند و در مسیر دایرکتوری های درون متغیر PATH$ وجود ندارند. بر خلاف دستور های Internal که مستقیم توسط خود شِل اجرا می شوند، دستور های External باید توسط شِل در حافظه بارگذاری شده و سپس اجرا شوند. دستور های External در مسیر های متغیر PATH$ وجود دارند.بطور مثال دستور های cd و pwd از نوع دستور های Internal و دستور های date و less از دستور های External هستند. تفاوت دیگر دستور های Internal با دستور های External در این است که Internal Command ها بدون Manual Page هستند و اجرا دستور زیر، برای هر کدام از آنها تنها یک صفحه را نشان می دهد.

man BUILD-IN COMMAND NAME

\"\"

می توان از شکل زیر برای خواندن راهنما (Help) دستور های Build-in استفاده کرد.

help BUILD-IN COMMAND NAME

برای تعیین نوع یک دستور، از دستور type که خود نیز دستوری Internal است استفاده می کنیم. به هر حال خروجی این دستور یکی از انواع زیر است :

  • خروجی می تواند یک Alias یا نام مستعار باشد. برای مشاهده تمامی Alias های تعریف شده در سیستم از دستور alias استفاده کنید.
  • خروجی Function یا تابع است.
  • خروجی دستوری Internal یا Build-in است.
  • خروجی دستوری External است که در مسیر های متغیر PATH$ وجود دارد.
  • کلمات کلید مانند if و for که Keyword گویند.

با دستور زیر می توانید راهنمای دستور type که از نوع Internal است را بخوانید.

help type

\"\"

دستور های External بصورت فایلی درون دیسک قرار دارند و مسیرشان باید در متغیر PATH$ وجود داشته باشد.اما چگونه فهرستی از دستور های Build-in یا Internal را ببنیم؟ یک راه، فهمیدن از خروجی دستور type است که عبارت Build-in نشان داده می شود. روش دیگر این است که هرگاه دستور های Build-in را پس از دستور man اجرا کنیم، برای تمامی دستور های Biuld-in یا Internal صفحه ی شکل یک نشان داده می شود. در اولین بخش همین شکل لیستی از دستور های Build-in نشان داده شده است. مانند alias,bg,bind,pwd,cd و … که در شکل اول نشان داده شده است. همچنین می توانید این فایل را دانلود کنید.

اما در شکل بالا بطور مثال دستور ls که جز دستور های Internal نیست و بصورت یک alias نشان داده شده است. اما اگر دستور زیر را اجرا کنید خواهید دید که دستور ls در واقع یک alias نیست و جزئی از دستور های External و قرار گرفته در مسیر های متغیر PATH$ است.

which ls

\"\"

دستور type دارای سوئیچ t- است که نوع یک دستور را تعیین می کند که یکی از موارد زیر است :

alias : یعنی یک نام مستعار تعیرف شده.

keyword : یک لغت کلیدی مانند if

file : یک دستور External که در یکی از مسیر های متغیر PATH$ وجود دارد.

buildin : یک دستور Build-in یا Internal

function : یک تابع تعریف شده.

type -t COMMAND_NAME

\"\"

اگر دقت کرده باشید برخی از دستور ها مانند ls که در اصل دستورهایی External و در مسیری از مسیر های متغیر PATH$ وجود دارد بصورت یک Alias نشان داده می شود. با استفاده از سوئیج a- بصورت کامل اطلاعات نشان داده می شود.

type -a ls

\"\"

دستور which برای پیدا کردن محل ذخیره سازی یک دستور External استفاده می شود. اگر یک دستور از نوع External باشد و همچنین مسیر ذخیره سازی آن بر روی دیسک در فهرست دایرکتوری های متغیر PATH$ نیز وجود داشته باشد، which محل ذخیره آنرا نشان می دهد. ولی اگر دستور از نوع Internal باشد و به دلیل عدم وجود دستور های Internal یا Build-in در بین دایرکتوری های متغیر PATH$ یک خطا بصورت شکل زیر در صورت اجرای دستور which برای یافتن محل دستوری مانند cd که از نوع Build-in است نشان داده می شود که معرف عدم وجود cd در بین دایرکتوری های PATH$ است.

which cd

\"\"

به هر حال اگر شما به دنبال مسیر یک دستور External هستنید به خاطر عدم وجود مسیر آن در متغیر PATH$ یا اینکه بطور کلی آن دستور نصب نشده است،بازهم با خطای بالا مواجه می شوید



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