The task is to programmatically obtain the name used to invoke the program. (For example determine whether the user ran "python hello.py", or "python hellocaller.py", a program importing the code from "hello.py".)

Sometimes a multiline shebang is necessary in order to provide the script name to a language's internal ARGV.

See also Command-line arguments

Examples from GitHub.

"exec" "gst" "-f" "$0" "$0" "$@"
"exit"
 
| program |
 
program := Smalltalk getArgv: 1.
 
Transcript show: 'Program: ', program; cr.