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

Вот два способа сделать это:

  1. Тип sh затем ENTER, а затем введите ./Fortune_Teller_5000 (вам может понадобиться cd в соответствующий каталог)
  2. Тип sh -c ./Fortune_Teller_5000 или же sh -c /path/to/folder/Fortune_Teller_5000

Бег sh [Program Name] инструктирует sh программа для выполнения сценария оболочки с именем [Program Name] поэтому, если этот файл является программой на C, команда не выполнится.

Спецификация POSX для sh, стандартный интерпретатор языка команд, утверждает, что аргумент для sh должен быть "путь к файлу, содержащему команды".

Другие вопросы по тегам