您好,登錄后才能下訂單哦!
我看shell的第一眼
1、腳本解釋器設置
腳本第一行:#!/bin/sh
[root@SUN sun]# cat test.sh
#!/bin/sh
首先第一行可以拆分為兩部分,#!和絕對路徑,#!只是特殊的表示符,#!后面存放的是解釋器地址(即shell存放路徑)。注意,shell路徑必須是全路徑。其實第一行也不是非寫不可,是可以省略的,不寫第一行,可以手動指定shell,例如:sh test.sh,手動指定shell,腳本文件還不必要求有執行權限。
2、shell執行腳本的過程
a、執行交互式命令
用戶進入終端,shell進程已經被運行,用戶輸入一條命令,如果是shell內部命令(例如cd,exec),此時不會新建一個進程,內部命令其實就是shell里的一個子函數,就在當前進程執行完畢。如果是一個外部命令(例如ls,rm),則shell進程會先fork一個子進程,調用exec執行該命令,父進程調用wait()或waitpid()來等待子進程結束。
b、執行腳本文件
shell進程會先fork一個子進程,然后調用exec執行腳本文件。這個時候執行exec執行的另外一套機制,exec會讀取文本文件的第一行,如果指定了解釋器,則會調用指定的解釋器,從解釋器的_start開始執行,腳本文件的內容就當作參數傳給解釋器。
3、查看當前使用shell的方法
(1)echo $SHELL
[root@SUN Desktop]# echo $SHELL
/bin/bash
(2)ps
[root@SUN Desktop]# ps
PID TTY TIME CMD
3246 pts/0 00:00:00 bash
3269 pts/0 00:00:00 ps
(3)輸入一條不存在的命令,abcd
[root@SUN Desktop]# adcd
bash: adcd: command not found
(4)ehco $0
[root@SUN Desktop]# echo $0
/bin/bash
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。