小鳥初學Shell程式設計(三)指令碼不同執行方式的影響

2022-01-10 01:09:37 字數 2060 閱讀 4672

執行shell指令碼的方式通常有以下四種

方式一bash方式執行指令碼的話,會在當前的終端下面產生乙個bash子程序來執行指令碼,所以對當前的環境是沒有影響的。

[root@lincoding usr]# bash ./test.sh
方式二./test.sh的方式執行,則指令碼第一行宣告是哪個shell直譯器就會產生哪個shell直譯器的子程序來執行指令碼,如果宣告的shell直譯器是bash,則與方式一類似。

[root@lincoding usr]# ./test.sh
方式三和方式四執行的時候,和上面的方式一和方式略有點不同。

因為他執行的時候是通過當前的終端來執行shell指令碼的,不會產生子程序,所以會當前的環境是有影響的。

[root@lincoding usr]# source ./test.sh

[root@lincoding usr]# . ./test.sh

上述也提及到了方式一和方式二,由於是會產子程序來執行shell指令碼,所以對當前的環境是沒有影響的;而方式二和方式三,是在當前的終端執行shell指令碼,所以是會對當前的環境是有影響的。

舉個栗子,編寫乙個切換目錄的test.sh指令碼,內容如下

#!/bin/bash

# 切換到tmp目錄

cd /tmp

# 列印當前目

pwd

那麼使用方式一執行test.sh指令碼,其結果如下:

[root@lincoding /]# bash test.sh 

/tmp

[root@lincoding /]# pwd

/

可以發現,使用方式一去執行指令碼,不需要給予執行許可權。

方式二執行test.sh指令碼,其結果如下:

[root@lincoding /]# chmod u+x test.sh 

[root@lincoding /]# ls -l test.sh

-rwxr--r--. 1 root root 64 sep 26 18:34 test.sh

[root@lincoding /]# ./test.sh

/tmp

[root@lincoding /]# pwd

/

方式一和方式二執行完切換到/tmp目錄的shell指令碼後,終端所在的目錄沒有變化,還是在/根目錄,說明方式一和方式二的執行方式是對當前的環境是沒有影響的。

原因就是方式一和二執行shell指令碼時,會產生子程序來執行shell指令碼,當指令碼執行結束後,子程序退出,回到了父程序,那麼對當前所在的環境就不會產生影響。

接下來看,方式三執行結果:

[root@omp120 /]# source ./test.sh 

/tmp

[root@omp120 tmp]# pwd

/tmp

方式四執行結果:

[root@omp120 /]# . ./test.sh 

/tmp

[root@omp120 tmp]# pwd

/tmp

從上面方式三和方式四的執行結果,可以發現,執行完切換到/tmp目錄的shell指令碼後,當前的終端環境所在的目錄已經被切換了到了/tmp目錄,說明方式三和方式四的執行方式是對當前的環境是有影響的。

方式一和方式二執行shell指令碼時,會產生子程序來執行shell指令碼,當指令碼執行結束後,子程序退出,回到了父程序,那麼對當前所在的環境就不會產生影響。

而方式二和方式四是在當前環境執行shell指令碼,也就是在當前程序執行shell指令碼,其執行的結果就會影響當前的環境。

Linux shell程式設計學習筆記(三) 指令碼引數

1 指令碼傳遞引數測試 bin bash test.sh test pass parameters by wzs 20171021 echo parameters echo 執行指令碼如下 book wzs work tq210 shell test.sh a b c d 2 parameters ...

三 指令碼編寫與執行

編寫指令碼的思路 明確指令碼實現的功能 哪些資料是變化的,把變化的資料用變數來表示 使用哪種流程控制 使用哪些系統命令 1 編寫指令碼 使用vim文字編輯器 每行一條linux命令,按執行順序依次編寫 2 賦予可執行許可權 若直接執行指令碼檔案,必須具有可執行屬性 3 執行指令碼檔案 指令碼檔案路徑...

Mysql資料備份三 指令碼備份mysqldump

使用mysqldump進行備份,這個是最保險最安全的資料備份方法.雖然使用它比mysqlhotcopy要慢些,但其匯出的是sql語句文字檔案,不存在平台的相容性問題.也可用於備份除myisam型別以外的資料表.下面給出shell指令碼,大家可以根據自己的實際需要對其進行修改,以完成自己需要的功能.s...