Проверяет ли argv[0]
и есть ли в коде ключ / регистр?
Изучите код и найдите для себя. Но я уверен, что общий ответ: да, что-то подобное.
Это известный трюк. Возьмите BusyBox в качестве примера. Из Википедии:
Типичные компьютерные программы имеют отдельный двоичный (исполняемый) файл для каждого приложения. BusyBox - это один двоичный файл, который представляет собой конгломерат многих приложений, доступ к каждому из которых можно получить, вызвав один двоичный файл BusyBox с различными именами (поддерживаемый наличием символической ссылки или жесткой ссылки для каждого отдельного имени) определенным образом с соответствующими аргументы.
Bash - это еще один пример. От man bash
:
Если bash
вызывается с именем sh
, он пытается максимально близко имитировать поведение при запуске исторических версий sh
, при этом также соответствует стандарту POSIX.
Проверьте /bin/sh
в вашем Debian Stretch. Это символическая ссылка на (вероятно)... dash
. Этот сайт объясняет:
До Debian Lenny оболочкой по умолчанию /bin/sh
была bash
. Начиная с Debian Squeeze, оболочкой по умолчанию будет dash
.