溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

我看shell的第一眼

發(fā)布時間:2020-08-08 09:41:14 來源:網(wǎng)絡(luò) 閱讀:595 作者:孫小銀 欄目:軟件技術(shù)

我看shell的第一眼

1、腳本解釋器設(shè)置

腳本第一行:#!/bin/sh

[root@SUN sun]# cat test.sh
#!/bin/sh

首先第一行可以拆分為兩部分,#!和絕對路徑,#!只是特殊的表示符,#!后面存放的是解釋器地址(即shell存放路徑)。注意,shell路徑必須是全路徑。其實第一行也不是非寫不可,是可以省略的,不寫第一行,可以手動指定shell,例如:sh   test.sh,手動指定shell,腳本文件還不必要求有執(zhí)行權(quán)限。

2、shell執(zhí)行腳本的過程

a、執(zhí)行交互式命令

用戶進入終端,shell進程已經(jīng)被運行,用戶輸入一條命令,如果是shell內(nèi)部命令(例如cd,exec,此時不會新建一個進程,內(nèi)部命令其實就是shell里的一個子函數(shù),就在當前進程執(zhí)行完畢。如果是一個外部命令(例如lsrm),則shell進程會先fork一個子進程,調(diào)用exec執(zhí)行該命令,父進程調(diào)用wait()waitpid()來等待子進程結(jié)束。

b、執(zhí)行腳本文件

shell進程會先fork一個子進程,然后調(diào)用exec執(zhí)行腳本文件。這個時候執(zhí)行exec執(zhí)行的另外一套機制,exec會讀取文本文件的第一行,如果指定了解釋器,則會調(diào)用指定的解釋器,從解釋器的_start開始執(zhí)行,腳本文件的內(nèi)容就當作參數(shù)傳給解釋器。

3、查看當前使用shell的方法

1echo $SHELL

   [root@SUN Desktop]# echo $SHELL
  /bin/bash

2ps

[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

4ehco $0

  [root@SUN Desktop]# echo $0
   /bin/bash

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI