me=`basename "$0"`
Для чтения символической ссылки 1 , что обычно не то, что вам нужно (обычно вы не хотите путать пользователя таким образом), попробуйте:
me="$(basename "$(test -L "$0" && readlink "$0" || echo "$0")")"
IMO, это даст непонятный результат. "Я запустил foo.sh, но он говорит, что я запускаю bar.sh !? Должно быть, это ошибка!" Кроме того, одной из целей получения символических ссылок с разными именами является предоставление различных функциональных возможностей в зависимости от имени, которое оно называется (например, gzip и gunzip на некоторых платформах).
1 То есть, чтобы разрешить символические ссылки таким образом, чтобы при выполнении пользователем foo.sh
, который на самом деле является символической ссылкой на bar.sh
, вы хотели использовать разрешенное имя bar.sh
вместо foo.sh
.