99热99这里只有精品6国产,亚洲中文字幕在线天天更新,在线观看亚洲精品国产福利片 ,久久久久综合网

歡迎加入QQ討論群258996829
麥子學(xué)院 頭像
蘋果6袋
6
麥子學(xué)院

  linux的內(nèi)建命令和外部命令

發(fā)布時(shí)間:2016-10-31 16:31  回復(fù):0  查看:2037   最后回復(fù):2016-10-31 16:31  

Linux命令有內(nèi)部命令(內(nèi)建命令)和外部命令之分,內(nèi)部命令和外部命令功能基本相同,但是其工作機(jī)制相差很大。本文就內(nèi)建命令和外部命令做一下介紹。

  一、內(nèi)部命令(內(nèi)建命令)

  內(nèi)部命令,實(shí)際上是shell程序的一部分,其中包含的是一些比較簡單的linux系統(tǒng)命令,這些命令由shell程序識別并在shell程序內(nèi)部完成運(yùn)行,通常在linux系統(tǒng)加載運(yùn)行時(shí)shell就被加載并駐留在系統(tǒng)內(nèi)存中。內(nèi)部命令是寫在bashy源碼里面的,其執(zhí)行速度比外部命令快,因?yàn)榻馕鰞?nèi)部命令shell不需要創(chuàng)建子進(jìn)程。比如:exit,history,cdecho等。

  所以在內(nèi)部命令被執(zhí)行的時(shí)候是先去內(nèi)存里面查找,然后再被執(zhí)行。

  二、外部命令

  外部命令是linux系統(tǒng)中的實(shí)用程序部分,因?yàn)閷?shí)用程序的功能通常都比較強(qiáng)大,所以其包含的程序量也會很大,因此系統(tǒng)加載時(shí)并不隨系統(tǒng)一起被加載到內(nèi)存中。只有在需要時(shí)才被系統(tǒng)調(diào)用到內(nèi)存。通常外部命令的實(shí)體并不包含在shell中,但是其命令執(zhí)行過程是由shell程序控制的。shell程序管理外部命令執(zhí)行的路徑查找、加載存放,并控制命令的執(zhí)行。外部命令是在bash之外額外安裝的,通常放在/bin,/usr/bin,/sbin,/usr/sbin……等等??赏ㄟ^“echo $PATH”命令查看外部命令的存儲路徑,比如:ls、vi等。

  三、內(nèi)部命令和外部命令的其他相關(guān)介紹

  1)如何區(qū)分二者

  判斷一個(gè)命令是內(nèi)部命令還是外部命令的方法是:type command

  [root@localhoast ~]# type pwdpwd is a shell builtin

  [root@localhoast ~]# type vimvim is /usr/bin/vi

  顯示的builtin就表示該命令是內(nèi)部(內(nèi)建命令),顯示出執(zhí)行路徑的命令就是外部命令。

  2)二者的執(zhí)行過程

  內(nèi)部命令被用戶執(zhí)行時(shí)系統(tǒng)會從內(nèi)存中去調(diào)用,調(diào)用的速率快。外部命令被執(zhí)行的時(shí)候,系統(tǒng)將會讀取環(huán)境變量文件.bash_profile/etc/profile去找PATH路徑。

  然后在提一下命令的調(diào)用,有些外部命令被使用過后,會存在在hash表中,當(dāng)你再次輸入該命令它的調(diào)用會是這樣一個(gè)過程。

  hash——>內(nèi)置命令——>PATH 命令的調(diào)用其實(shí)應(yīng)該是這樣一個(gè)過程。hash的優(yōu)先級最高,然后是內(nèi)部命令,最后是外部命令。

  [root@localhost ~]# pwd

  /root

  [root@localhost ~]# ls

  anaconda-ks.cfg install.log install.log.syslog

  [root@localhost ~]# hash -l

  //顯示hash

  builtin hash -p /bin/cat cat

  builtin hash -p /bin/ls ls

  從hash表中可以看出,hash表不存放系統(tǒng)內(nèi)置命令。

 

文章來源:運(yùn)維部落

您還未登錄,請先登錄

熱門帖子

最新帖子

?