bashshellshdash-shell

How to change argv[0] value in shell / bash script?


The set command can be used to change values of the positional arguments $1 $2 ...

But, is there any way to change $0 ?


Solution

  • #! /bin/sh
    # try executing this script with several arguments to see the effect
    
    test ".$INNERCALL" = .YES || {
        export INNERCALL=YES
        # this method works both for shell and bash interpreters
        sh -c ". '$0'" argv0new "$@"
        exit $?
    }
    
    printf "argv[0]=$0\n"
    i=1 ; for arg in "$@" ; do printf "argv[$i]=$arg\n" ; i=`expr $i + 1` ; done