久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

shell入門第四講

1、回顧

我們昨天給大家分享了四種執行腳本的方法,不知道大家還記不記得了,分別是使用bash file.sh、./file.sh 、source file.sh、. ?file.sh。我們建議大家使用前兩種方法來執行腳本,這也是日常工作中大家都使用的方式。

那今天我們先來說說這四種執行腳本的區別是什么

2、區別

首先我們打印當前進程的父進程ID和當前進程的ID,分別使用命令

打印父進程ID: echo $PPID ??????

打印當前進程ID: echo $$

現在我們把它寫入腳本里面,如下所示

[root@localhost ~]# cat test.sh

#!/bin/bash

echo " PPID: $PPID ,PID: $$"

在執行之前,我們先來確定一下當前我們shell環境的PID號

[root@localhost ~]# tty

/dev/pts/2

[root@localhost ~]# ps axjf | grep pts/2

?PPID ??PID ?PGID ??SID TTY ?????TPGID STAT ??UID ??TIME COMMAND

?1016 ?6281 ?6281 ?6281 ? ??????????-1 Ss ??????0 ??0:00 ?\_ sshd: root@pts/2

?6281 ?6283 ?6283 ?6283 pts/2 ????7053 Ss ??????0 ??0:00 ?????\_ -bash

?6283 ?7053 ?7053 ?6283 pts/2 ????7053 R+ ??????0 ??0:00 ?????????\_ ps axjf

?6283 ?7054 ?7053 ?6283 pts/2 ????7053 S+ ??????0 ??0:00 ?????????\_ grep --color=pts/2

可以看出來我們當前shell進程的PID號(-bash)是6283這個數字,那現在我們來執行一下看看。

2.1、使用bash命令直接執行

[root@localhost ~]# bash test.sh

?PPID: 6283 ,PID: 7088

可以看出來當前的shell環境又生成了一個新的子shell環境,其子進程ID:7088,此時我們 $$ 正好打印的是這個子進程的ID號

2.2、使用./命令執行(先賦予x權限)

[root@localhost ~]# ./test.sh

?PPID: 6283 ,PID: 7115

可以看出來當前的shell環境也是又生成了一個新的子shell環境,其子進程ID:7115,進程ID號是隨機的,因此跟上面的不一樣。

2.3、使用source命令來執行

[root@localhost ~]# source test.sh

?PPID: 6281 ,PID: 6283

我們發現這次的PID號居然是6283,也就是我們上面給大家展示的當前shell環境的PID,而6281是其父進程ID號。這說明我們使用source命令執行腳本后 ?并沒有 ?生成一個新的子shell環境。還是在原來的bash shell環境中執行的shell腳本。

2.4、使用 ?. ?來執行

[root@localhost ~]# . test.sh

?PPID: 6281 ,PID: 6283

依然是與上面的soure命令的情況是一樣的,使用 . 來執行腳本,并沒有生成新的子shell環境,還是在原來的bash shell環境中執行的。

好了,上面的就是我們給大家分享的研究成果,希望大家今后在執行shell腳本時要知道自己是在做什么。不然回因為執行的shell環境問題而大費周折。

聲明:文章來源于網絡,如有侵權請聯系刪除!

相關新聞

歷經多年發展,已成為國內好評如潮的Linux云計算運維、SRE、Devops、網絡安全、云原生、Go、Python開發專業人才培訓機構!

    1. 主站蜘蛛池模板: 黄冈市| 老河口市| 兴文县| 湖南省| 普宁市| 桃江县| 云林县| 枣阳市| 扬中市| 河南省| 秭归县| 嘉禾县| 土默特右旗| 霍山县| 娄烦县| 通辽市| 蚌埠市| 收藏| 铁岭县| 科尔| 新建县| 买车| 辽宁省| 新建县| 山西省| 巴林右旗| 荆州市| 双流县| 新田县| 阳春市| 灵山县| 漳浦县| 宝丰县| 嵊州市| 酒泉市| 安溪县| 新化县| 阆中市| 印江| 左云县| 昆山市|