日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

exec和source命令的区别

發(fā)布時間:2025/4/16 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 exec和source命令的区别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原文地址:http://blog.sina.com.cn/s/blog_70c6d5130100u4yn.html

exec和source都屬于bash內(nèi)部命令(builtins commands),在bash下輸入man exec或man source可以查看所有的內(nèi)部命令信息。
bash shell的命令分為兩類:外部命令和內(nèi)部命令。外部命令是通過系統(tǒng)調(diào)用或獨(dú)立的程序?qū)崿F(xiàn)的,如sed、awk等等。內(nèi)部命令是由特殊的文件格式(.def)所實現(xiàn),如cd、history、exec等等。

在說明exec和source的區(qū)別之前,先說明一下fork的概念

fork是linux的系統(tǒng)調(diào)用,用來創(chuàng)建子進(jìn)程(child process)。子進(jìn)程是父進(jìn)程(parent process)的一個副本,從父進(jìn)程那里獲得一定的資源分配以及繼承父進(jìn)程的環(huán)境。子進(jìn)程與父進(jìn)程唯一不同的地方在于pid(process id)。

環(huán)境變量(傳給子進(jìn)程的變量,遺傳性是本地變量和環(huán)境變量的根本區(qū)別)只能單向從父進(jìn)程傳給子進(jìn)程。不管子進(jìn)程的環(huán)境變量如何變化,都不會影響父進(jìn)程的環(huán)境變量。

shell script:

有兩種方法執(zhí)行shell scripts,一種是新產(chǎn)生一個shell,然后執(zhí)行相應(yīng)的shell scripts;一種是在當(dāng)前shell下執(zhí)行,不再啟用其他shell。

新產(chǎn)生一個shell然后再執(zhí)行scripts的方法是在scripts文件開頭加入以下語句
#!/bin/sh
一般的script文件(.sh)即是這種用法。這種方法先啟用新的sub-shell(新的子進(jìn)程),然后在其下執(zhí)行命令。
另外一種方法就是上面說過的source命令,不再產(chǎn)生新的shell,而在當(dāng)前shell下執(zhí)行一切命令。

source:
source命令即點(.)命令。

在bash下輸入man source,找到source命令解釋處,可以看到解釋"Read and execute commands from filename in the current shell environment and …"。從中可以知道,source命令是在當(dāng)前進(jìn)程中執(zhí)行參數(shù)文件中的各個命令,而不是另起子進(jìn)程(或sub-shell)。

exec:
在bash下輸入man exec,找到exec命令解釋處,可以看到有"No new process is created."這樣的解釋,這就是說exec命令不產(chǎn)生新的子進(jìn)程。那么exec與source的區(qū)別是什么呢?

exec命令在執(zhí)行時會把當(dāng)前的shell process關(guān)閉,然后換到后面的命令繼續(xù)執(zhí)行。

------做運(yùn)維之前很矯情的小年輕-----

總結(jié)

以上是生活随笔為你收集整理的exec和source命令的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。