1、利用直接執行(sh/bash或./)的方式來執行腳本。
2、利用source(或 .)來執行腳本。
這兩種方式如果從執行結果來看,並沒有什麼區別。
下面看個例子:
- cat name.sh
- #!/bin/bash
- echo "Please input your name:"
- read name
- echo "Your name is $name"
- #sh name.sh #直接執行name.sh
- Please input your name:
- Jack #輸入Jack
- Your name is Please input your name:Jack
- #echo $name
- #沒有任何返回值,說明這個變量在父進程中是不存在的。
- #
- # source name.sh #使用source執行name.sh(也可寫成. name.sh )
- Please input your name:
- Jack
- Your name is Please input your name:Jack
- #echo $name
- Jack #有返回值,說明這個變量在父進程中是存在的。
第一種方式執行腳本時,是在一個新的子進程bash中運行的,腳本執行完成後退出子shell,變
量消失。就是說:一個子進程完成後,子進程內的各項變量或操作將會結束而不會傳回到父進
程中;第二種方式會在父進程中執行,各項操作都會在原本的bash內生效。