掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
本文主要介紹以下幾個命令的區(qū)別:

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、興安ssl等。為上1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的興安網(wǎng)站制作公司
commond
Linux執(zhí)行Scripts有兩種方式,主要區(qū)別在于是否建立subshell
source filename or . filename不創(chuàng)建subshell,在當前shell環(huán)境下讀取并執(zhí)行filename中的命令,相當于順序執(zhí)行filename里面的命令
bash filename or ./filename創(chuàng)建subshell,在當前bash環(huán)境下再新建一個子shell執(zhí)行filename中的命令子shell繼承父shell的變量,但子shell不能使用父shell的變量,除非使用export【備注:這和命名空間是相似的道理,甚至和c中的函數(shù)也有些類似】
子Shell從父Shell繼承得來的屬性如下:
子Shell不能從父Shell繼承的屬性,歸納如下:
$ (commond)它的作用是讓命令在子shell中執(zhí)行
commond和$(commond)差不多。【這里的“ ` ”符號是撇(反單引號),不是單引號,是鍵盤上Esc按鍵下面的那個鍵?!?/p>
exec commond替換當前的shell卻沒有創(chuàng)建一個新的進程。進程的pid保持不變作用:shell的內(nèi)建命令exec將并不啟動新的shell,而是用要被執(zhí)行命令替換當前的shell進程,并且將老進程的環(huán)境清理掉,而且exec命令后的其它命令將不再執(zhí)行。當在一個shell里面執(zhí)行exec ls后,會列出了當前目錄,然后這個shell就自己退出了。(后續(xù)命令不再執(zhí)行)因為這個shell已被替換為僅執(zhí)行l(wèi)s命令的進程,執(zhí)行結(jié)束自然也就退出了。需要的時候可以用sub shell 避免這個影響,一般將exec命令放到一個shell腳本里面,用主腳本調(diào)用這個腳本,調(diào)用點處可以用bash a.sh(a.sh就是存放該命令的腳本),這樣會為a.sh建立一個sub shell去執(zhí)行,當執(zhí)行到exec后,該子腳本進程就被替換成了相應(yīng)的exec的命令。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流