It looks like the source builtin pushes its own argc and argv onto the arrays 
but only if it is called with no other arguments.

$ cat /tmp/s
fun() { declare -p BASH_ARGC BASH_ARGV; }
fun arg

$ shopt -u extdebug; source /tmp/s
declare -a BASH_ARGC=([0]="1")
declare -a BASH_ARGV=([0]="/tmp/s")

$ shopt- u extdebug; source /tmp/s foo
declare -a BASH_ARGC=()
declare -a BASH_ARGV=()

Reply via email to