回文章列表
作者ju22.bbs@bbs.sayya.org (蹲下來是為了跳更遠) 看板: linux
標題Re: [問題]當source遇上$0變數時...
時間SayYA 資訊站 (2008/09/07 Sun 06:39:38)
※ 引述《kenduest (小州)》之銘言:
> ※ 引述《ju22 (蹲下來是為了跳更遠)》之銘言:
> > hi,everybody
> > 在shell script當中 $0這個內建變數代表的是
> > shell script檔案名稱
> > 用 ./shellscript.sh 或 bash shellscript.sh
> > 來執行時,可以正確地把shell script裡面的
> > echo $0命令顯示成
> > ./shellscript.sh
> > 和
> > shellscript.sh
> > 但是當我測試時,
> > 用source(不fork subshell,以目前的shell來執行)命令執行時
> > $source shellscript.sh
> > (或和source 有相同意義的 ".")
> > $. shellscript.sh
> > 在echo $0的命令執行後
> > 卻顯示
> > -bash
> > 請問這是什麼意義呢??
> > 為什麼會這樣呢??
> > thanks!!
>  . 與 source 表示以目前該 shell 來讀入執行,所以 script 只是
>   一個很單純的文字檔進而被 shell 讀入使用而已,所以取 $0 當然
>   是目前 shell 的程式檔名。

hi,kenduest

所以會產生這種差別的關鍵我在想是不是因為有無fork subshell來執行呢??

因為如果用 bash shellscript.sh 來執行的話,會先fork subshell

再來也是一樣很單純地將 shellscript.sh 視為文字檔進而被subshell

讀入使用....

thanks!!
--
※ Origin: SayYA 資訊站 <bbs.sayya.org> 
◆ From: 61.228.99.144
文章選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻