Как запустить мои программы на C с помощью Bourne Shell?
У меня нет проблем с запуском моих программ на C, переключившись в их каталог и запустив их с ./, Однако я не уверен, зачем переходить в каталог, а затем вводить sh [Program Name] дает мне эту ошибку:
Fortune_Teller_5000: 1: Fortune_Teller_5000: Syntax error: "(" unexpected
а также:
./Fortune_Teller_5000: 1: ./Fortune_Teller_5000: Syntax error: "(" unexpected
Я прочитал на страницах руководства bash, что sh Команда является оболочкой, которая не читает .bashrc файл, так что я немного запутался, потому что почему я не могу использовать его для запуска программ, которые я сделал. Я использовал его для установки драйверов принтера в соответствии с инструкциями на странице HP Linux для обработки изображений и печати.
2 ответа
Typing sh program_name предполагает, что имя_программы является сценарием оболочки и выполняет сценарий (поэтому он должен быть на языке sh/bash). Если Fortune_Teller_5000 бинарный файл (программа на скомпилированном C или даже исходный код на C), работающий sh Fortune_Teller_5000 не будет работать, как ожидалось.
Вот два способа сделать это:
- Тип
shзатем ENTER, а затем введите./Fortune_Teller_5000(вам может понадобитьсяcdв соответствующий каталог) - Тип
sh -c ./Fortune_Teller_5000или жеsh -c /path/to/folder/Fortune_Teller_5000
Бег sh [Program Name] инструктирует sh программа для выполнения сценария оболочки с именем [Program Name] поэтому, если этот файл является программой на C, команда не выполнится.
Спецификация POSX для sh, стандартный интерпретатор языка команд, утверждает, что аргумент для sh должен быть "путь к файлу, содержащему команды".