When running bash as:

bash -s foo bar

"$@" is not available inside .bashrc. Same for $ENV (POSIX
conformance issue?), $BASH_ENV, or ~/.bash_profile (with bash
--login -s).

In the case of bash -c, that also affects $0.

ksh88, ksh93, mksh, dash, zsh, posh, busybox sh can access $@ in
$ENV

Reproduce it with:

$ echo 'echo "$0" "$#" "$@"' > rc
$ (ENV=rc exec -a sh bash -s foo bar)
sh 0
sh-4.4$ exit
exit
$ bash --rcfile rc -s foo bar
bash 0
bash-4.4$ exit
$ BASH_ENV=rc bash  -c : arg0 foo bar
bash 0

In some cases, one could work around it by using:
PROMPT_COMMAND='. ./rc; unset PROMPT_COMMAND' bash -s foo bar
Or pass the argument via some other mean like encoded in an
environment variable.

-- 
Stephane

Reply via email to