1.shell命令分為內建命令和外部命令。
內建命令是shell解釋程式內建的,由shell直接執行,不需要派生新的程序
外部命令分為二進位制**和shell指令碼。
2.(1)為了執行外部的二進位制命令,需要一種機制,以允許子程序轉換為將要被執行的命令。unix/linux呼叫exec可以做到這些。它允許乙個程序用其他命令的可執行**覆蓋自己。二進位制**需要由磁碟裝入記憶體中執行。shell解釋程式會呼叫fork自身的乙個拷貝,然後用exec系列函式來執行外部命令,這樣外部命令就取代了當前的fork的子shell.
(2)shell指令碼的執行與二進位制檔案略有不同。對於shell指令碼來說,shell解釋程式會fork乙個子shell程式,子shell程式會檢查指令碼的第一行(如#!/bin/bahs),找到用來執行指令碼的解釋程式,然後裝入這個解釋程式,由它執行指令碼程式。在此解釋程式顯然是當前shell的子程序。如果這個解釋程式與當前使用的shell是同一種shell,比如都是bash,它就是當前shell的子shell,指令碼中的命令都是在子shell環境中執行的,不會影響當前shell的環境。
Shell基礎 Shell執行過程
shell讀取並執行命令時,基本上會執行如下操作 根據引號規則,將輸入分為word和operator。word和operator統稱為token,token之間用metacharacter分隔 space,tab,newline,alias expansion也在這一步執行。將tokens word...
redhat 啟動時的shell執行過程
虛擬終端輸入賬號密碼後shell執行順尋 1 etc profile 定義公有環境變數 2 etc bashrc 3 home username bash profile 新增私有環境變數 4 bash profile呼叫.bashrc 新增私有環境變數 新增自己的變數最好新增在 bashrc中因為...
shell執行 shell多程序執行
shell在linux中,是使用者和kernel溝通的橋梁,採用c編寫,既是一種命令語言,也是一種解釋型指令碼語言,我們常寫的ls,grep就是基本的shell命令。cat test.txt grep abc abc.txt 將test.txt所有包含abc的行提取到abc.txt中多個處理都這樣來...