真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

淺談ubuntu執(zhí)行.sh文件幾種方式區(qū)別

前言

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比秦皇島網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式秦皇島網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋秦皇島地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。

不同的script執(zhí)行方式會(huì)造成不一樣的結(jié)果,尤其對(duì)bash的環(huán)境影響很大,腳本的執(zhí)行方式有大概以下幾種方式。

首先寫一個(gè)簡(jiǎn)單的test.sh文件:

#!/bin/bash

read -p "Please input your first name:" firstname
read -p "Please input your last name:" lastname
echo -e "\nYour full name is: $firstname $lastname"

使用sh test.sh執(zhí)行

使用 sh test.sh 來執(zhí)行script文件,該方法標(biāo)明使用 sh 這種shell來執(zhí)行test.sh文件,sh已經(jīng)是一種被bash替代的shell,盡管我們?cè)趖est.sh中聲明使用 #!/bin/bash 來執(zhí)行我們的文件,但此時(shí)使用sh而不是bash,則#!/bin/bash 已不起作用。

使用bash test.sh 執(zhí)行

該方法其實(shí)與 sh test.sh 的原理一樣,只是使用了 /bin/bash 該種shell來執(zhí)行我們的腳本文件。

所以,其實(shí)使用 dash test.sh' 也是可以的,只是取決于自己想使用那種shell來執(zhí)行腳本,但sh、bash、dash三者有些許差別,對(duì)于部分關(guān)鍵字如 let,bash支持,而sh和dash并不支持,對(duì)于部分關(guān)鍵字則選擇使用bash。

使用點(diǎn) . 執(zhí)行

該種方式使用之前必須為文件添加執(zhí)行的權(quán)限:

$ chmod +x test.sh

添加完執(zhí)行權(quán)限之后,便可以使用 ./test.sh 來執(zhí)行腳本,該方式與 bash test.sh 是一樣的 ,默認(rèn)使用 bin/bash 來執(zhí)行我們的腳本。

只有該種執(zhí)行方式需要對(duì)文件添加執(zhí)行權(quán)限,其他方式并不需要。

使用source執(zhí)行

使用source則也能夠直接執(zhí)行我們的腳本:

source test.sh 

區(qū)別

當(dāng)我們使用 sh test.sh 、bash test.sh 、 ./test.sh 執(zhí)行腳本的時(shí)候,該test.sh運(yùn)行腳本都會(huì)使用一個(gè)新的shell環(huán)境來執(zhí)行腳本內(nèi)的命令,也就是說,使用這3種方式時(shí),其實(shí)script是在子進(jìn)程的shell內(nèi)執(zhí)行,當(dāng)子進(jìn)程完成后,子進(jìn)程內(nèi)的各項(xiàng)變量和操作將會(huì)結(jié)束而不會(huì)傳回到父進(jìn)程中。

無法理解??看下面例子:

[root@ubuntu] # bash test.sh
Please input your first name: yao  <==輸入firstname
Please input your last name: pentonBin  <==輸入lastname

Your full name is: yao pentonBin
[root@ubuntu] # echo $firstname
       <==這里沒有輸出

如果使用source方法來執(zhí)行腳本呢?

[root@ubuntu] # source test.sh
Please input your first name: yao  <==輸入firstname
Please input your last name: pentonBin  <==輸入lastname

Your full name is: yao pentonBin
[root@ubuntu] # echo $firstname
yao    <==這里輸出firstname

也就是說,source方法執(zhí)行腳本是在父進(jìn)程中執(zhí)行的,test.sh的各項(xiàng)操作都會(huì)在原本的shell內(nèi)生效,這也是為什么不注銷系統(tǒng)而要讓某些寫入~/.bashrc的設(shè)置生效時(shí),需要使用 source ~/.bashrc 而不能使用 bash ~/.bashrc

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


文章標(biāo)題:淺談ubuntu執(zhí)行.sh文件幾種方式區(qū)別
本文網(wǎng)址:http://weahome.cn/article/jjcpps.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部