Обычно оболочка имеет переменную окружения с именем $ PATH. Это просто упорядоченный список всех каталогов, которые нужно посмотреть, когда кто-нибудь наберет команду. Как только он находит исполняемый файл (под которым я подразумеваю файл, для которого у вас есть разрешения на выполнение, а не файл с расширением .exe) с тем же именем, что и введенный, он запускает этот файл. Общие каталоги в $ PATH могут быть / bin, / usr / local / bin, ~ / bin и т. Д.
Итак, когда вы набираете 'firefox', оболочка просматривает все каталоги в $ PATH, пока не найдет / usr / local / bin / firefox, который затем запустится. Чтобы ваши собственные программы работали одинаково, вам нужно либо поместить их (или символическую ссылку на них) в каталог, который, вероятно, будет находиться в пути каждого пользователя (/ usr / local / bin / - хороший выбор ), или вам нужно будет заставить своих пользователей добавлять каталог вашей программы в их $ PATH.
Более подробное описание см. В статье Википедии о переменной $ PATH.