امیرحسین کریم پور
مدیر ارشد توسینسو و متخصص سرویس های مایکروسافت

تفاوت دستور Internal و دستور External در لینوکس چیست؟

در این مطلب میخواهیم درباره دستورات Internal و External در سیستم عامل لینوکس برای شما عزیزان توضیحاتی را ارائه بدهیم. دستورات داخلی یا Internal Commands در لینوکس و نیز سیستم عامل های خانواده Unix به دستوراتی گفته می شود که بصورت Built-in داخل Shell قرار دارند و به آنها معمولا Built-in Commands نیز می گویند.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

سرعت اجرای این دستورات به همان اندازه است که Shell به دنبال اجرای دستوراتی که داخل متغیر محیطی PATH تعریف شده اند می باشد. دستوراتی مثل cd ، fg ، alias ، echo ، export ، history و ... از جمله Internal Command ها می باشند. توجه کنید که برخی از Internal Command ها نیز برای اجرا شدن باید توسط Shell از طریق PATH ابتدا فراخوانده شوند.

دستورات خارجی یا External Commands به دستوراتی اطلاق می شود که داخل Shell بصورت Built-in تعریف نشده اند. این نوع دستورات برای اجرا شدن باید داخل متغیر محیطی PATH تعریف شوند. زمانی که این دستورات میخواهند اجرا شوند Shell باید به متغیر محیطی PATH مراجعه کند

و مسیری که دستور مربوطه در آن قرار دارد را بخواند و دستور را اجرا کند که این خود یک Process جدید اجرا می کند. External Command ها معمولا در شاخه bin// و یا usr//bin// قرار دارند. دستوراتی مثل ls ، cat ، grep ، cp ، mv و ... از جمله دستورات External می باشند. برای اینکه بدانید یک دستور Internal هست یا External کافیست تا دستور type را به همراه نام دستور در مقابل آن تایپ کنید. برای مثال :

# type cat
cat is /bin/cat

همانطور که مشاهده می کنید خروجی دستور type cat به ما می گوید که دستور cat در مسیر bin//cat// واقع شده است. که نشان دهنده این است که این دستور External است. یا برای مثالی دیگر :

# type history
history is a shell builtin

همانطور که در خروجی دستور type history مشاهده می کنید پیغام history is a shell builtin به ما نشان داده می شود که بیانگر این است که دستور history یک دستور Internal یا Shell Built-in Command است. حتی خود دستور type نیز Internal Command هست. به یک نکته مهم توجه کنید که برخی از دستورات مانند pwd که در خروجی مسیر جاری که در آن هستید را نشان می دهد هم می تواند یک Internal Command و هم External Command می باشد. در دوره آموزش لینوکس اسنشیالز بصورت مفصل در خصوص استفاده از این دستورات در اسکریپت نویسی توضیح میدهیم . برای اینکه از درستی این مورد مطمئن شوید میتوانید با اجرای دستور type و استفاده از سوئیچ a به شکل زیر این مورد را متوجه شوید :

# type -a pwd
pwd is a shell builtin
pwd is /bin/pwd

همانطور که در خروجی دستور فوق مشاهده کردید دستور pwd هم یک دستور Internal و هم یک دستور External می باشد. نکته آخر این هست که زمانیکه External Command علاوه بر Internal Command روی سیستم نصب می شود Internal Command در اجرا شدن بر External Command تقدم و اولویت دارد. دلیل آن هم کاملا واضح است چون Internal Command هم راحت تر و هم می توان گفت به صورت نامحسوسی با سرعت بیشتر اجرا می شود. برای اجرا کردن External Command ای که Internal Command آن نیز در سیستم وجود دارد بایستی مسیر دقیق یا Exact Path آن دستور را در Shell مشخص کنید. امیدوارم مورد توجه شما قرار گرفته باشد.


امیرحسین کریم پور
امیرحسین کریم پور

مدیر ارشد توسینسو و متخصص سرویس های مایکروسافت

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

نظرات