В Bash больше или равно 5 вы можете изменить $0
следующим образом:
$ cat bar.sh
#!/bin/bash
echo $0
BASH_ARGV0=lol
echo $0
$./bar.sh
./bar.sh
lol
ZSH даже поддерживает прямое назначение0
:
$ cat foo.zsh
#!/bin/zsh
echo $0
0=lol
echo $0
$./foo.zsh
./foo.zsh
lol