Linux命令執行的過程(小白必讀)

**Linux命令執行的過程(小白必讀)

---Linux在發展,算算從誕生到如今已經年過半百,可是你知道在你編輯完命令後,系統到底發生了什麼嗎?


在近年中,Linux憑藉着其穩定,性能優異,在高端服務器市場佔據着重要的地位,下面咱們來簡單介紹下linux命令執行的過程。
「一切皆文件」是Linux的基本哲學之一,不只是普通文件,目錄,字符設備,塊設備,套接字等在其中都被認爲是文件對待,全部的資源訪問都是被統一表現爲文件的訪問,大概作如下總結。linux

在Linux中有三種命令,內部命令,外部命令,別名;
內部命令:
系統爲了提升系統運行的效率,常常使用一些輕量命令在系統啓動時候一塊兒加載到內存中,隨時等待着shell的調用,他們其實是shell程序的一部分,主要包括一些相對簡單的系統命令,這部分命令被稱爲內部命令。
外部命令:
外部命令是Linux中重要且實用的命令部分,由於其都是文件,且比較大,因此在開機時候不能加載,而是在須要的時候才加載調用文件,一般不包含在shell中,可是其運行的過程也是由shell程序控制的。
別名:
由於有些命令比較長,且在使用的過程鍵盤敲擊不是很方便,因此定義一些別名,方便使用。
系統執行命令時候也會偷懶,按照以下邏輯和順序來執行:shell

1 ,系統會判斷路徑
判斷用戶數是否 按照絕對路徑或者相對路徑方式執行,(bin/ls)斷定是的話,便執行。服務器

2 ,檢查是不是別名,
由於設定別名的時候,就是在給以前的命令,替換一個名稱咱們能夠經過輸入 aliaside

#alias
執行結果以下

alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias which='(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'

3 ,判斷是內部命令仍是外部命令
命令解釋器shell會判斷是否是內部命令,將查詢的hash對應的緩衝區中,是否有這命令對應的路徑,若是有就按照此路徑到磁盤上查找此命令文件,並執行,若是找不到此文件,將提示," such fiel or directory"
type是咱們檢驗的內部命令仍是外部命令的朋友性能

# type alias

alias is a shell builtin

#type touch 

touch is /usr/bin/touch

提示is a shell builtin 是內部命令
顯示路徑的是外部命令ui

4 , 若是hash對應的緩衝區中,沒有找到相應的命令,將按照PATH系統環境變量指定路徑順序進行搜索,一旦有一個目錄下找到此命令文件,將執行。並中止接續搜索其餘的目錄。這意味着,若是PATH變量指定的多個目錄中有此命令文件,將只會執行排序在前的目錄中的命令文件。code

5 ,若是PATh變量中全部目錄都沒法找到此命令文件,將提示 「command not found....」,表示執行失敗排序

.
.
.內存

相關文章
相關標籤/搜索