Как запустить мои программы на 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
должен быть "путь к файлу, содержащему команды".