Тривиально можно решить, каким должен быть $0
. Просто создайте ссылку:
$ cat foo.sh
#! /bin/bash
readonly SCRIPT_HELP="$(cat <<EOF
Usage: $(basename "$0") [-h]
EOF
)"
echo "${SCRIPT_HELP}"
$ ./foo.sh
Usage: foo.sh [-h]
EOF
$ ln -s foo.sh bar.sh
$ ./bar.sh
Usage: bar.sh [-h]
EOF
В данном конкретном случае нет, я не думаю, что это можно будет использовать с какой-либо большой пользой. "$0"
и SCRIPT_HELP
заключаются в кавычки при использовании (внутри подстановок вложенных команд и здесьдокументов, но, тем не менее, в кавычки), и они не оцениваются
ed.
$ ln -s ./foo.sh '"; echo rm -rf ~; echo"'
$ ./\"\;\ echo\ rm\ -rf\ \~\;\ echo\"
Usage: "; echo rm -rf ~; echo" [-h]
EOF