Skip to content

Instantly share code, notes, and snippets.

@ehabkost
Created January 10, 2012 13:16
Show Gist options
  • Save ehabkost/1589039 to your computer and use it in GitHub Desktop.
Save ehabkost/1589039 to your computer and use it in GitHub Desktop.
echo inc.sh:
if [ "${#BASH_SOURCE[@]}" -le 1 ];then
echo I am the main script file.
else
echo I am being called from another file.
fi
func1()
{
echo env on func1 called from $1:
set
echo --------
}
echo env on inc.sh, top-level:
set
echo ----------
func1 inc.sh
echo end of inc.sh
echo I am mainscript.sh:
source inc.sh
echo env on mainscript.sh, top-level:
set
echo -----------
func1 mainscript.sh
echo end of mainscript.sh.
@ehabkost
Copy link
Author

Output of revision 4e5932:

[1589039/master]$ bash mainscript.sh  | egrep '^env on|FUNC|BASH_SOURCE'
env on inc.sh, top-level:
BASH_SOURCE=([0]="inc.sh" [1]="mainscript.sh")
env on func1 called from inc.sh:
BASH_SOURCE=([0]="inc.sh" [1]="inc.sh" [2]="mainscript.sh")
FUNCNAME=([0]="func1" [1]="source" [2]="main")
env on mainscript.sh, top-level:
BASH_SOURCE=([0]="mainscript.sh")
mainscript.sh: line 5: -----------: command not found
env on func1 called from mainscript.sh:
BASH_SOURCE=([0]="inc.sh" [1]="mainscript.sh")
FUNCNAME=([0]="func1" [1]="main")
(ehabkost@otherpad:~/tmp/1589039 (ok))
[1589039/master]$ bash inc.sh  | egrep '^env on|FUNC|BASH_SOURCE'
env on inc.sh, top-level:
BASH_SOURCE=([0]="inc.sh")
env on func1 called from inc.sh:
BASH_SOURCE=([0]="inc.sh" [1]="inc.sh")
FUNCNAME=([0]="func1" [1]="main")
(ehabkost@otherpad:~/tmp/1589039 (ok))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment