2023年4月20日 星期四

用.和 bash執行shell script 的差別

乍看之下 . xxx.sh跟 bash xxx.sh都可子執行xxx.sh

但兩者有些不同

. xxx.sh

等同於 source xxx.sh

在目前的shell 下執行 xxx.sh內的內容,等於把 xxx.sh貼過來當前的shell執行

如果shell內有去取 $0 會得到 bash

echo $BASHPID會得到跟外面一樣的$BASHPID

要取得真正script 路徑要用 $BASH_SOURCE

bash xxx.sh

新的bash執行xxx.sh

$0=$BASH_SOURCE=xxx.sh

也會有不同的$BASHPID

在新的shell中,變數與原本的shell並不互通,所有的行為都只做用在新開的bash中,包括function的宣告

沒有留言:

張貼留言