Как запустить мои программы C с Оболочкой Bourne?

У меня нет проблемы при запущении моих программ C путем переключения на их каталог и запуска их с ./. Однако я не уверен почему, изменяясь на каталог и затем ввод sh [Program Name] дает мне эту ошибку:

Fortune_Teller_5000: 1: Fortune_Teller_5000: Syntax error: "(" unexpected

и:

./Fortune_Teller_5000: 1: ./Fortune_Teller_5000: Syntax error: "(" unexpected

Я читал в страницах справочника удара что sh команда является оболочкой, которая не читает .bashrc файл, таким образом, я немного смущен как, почему я не могу использовать его для запущения программ, которые я сделал. Я действительно использовал его для установки моих драйверов принтера согласно направлениям на странице HP Linux Imaging and Printing.

2
задан 29 June 2016 в 07:14

2 ответа

Ввод sh program_name предполагает, что program_name является сценарием оболочки и выполняет сценарий (таким образом, это должно быть на sh/bash языке). Если Fortune_Teller_5000 будет двоичный файл (Скомпилированная программа C, или даже C исходный код), то выполнение sh Fortune_Teller_5000 не будет работать как ожидалось.

Вот 2 способа, которыми Вы могли сделать это:

  1. Тип sh затем ВХОДИТ, и затем тип ./Fortune_Teller_5000 (Вам, возможно, понадобится к cd в надлежащий каталог)
  2. Тип sh -c ./Fortune_Teller_5000 или sh -c /path/to/folder/Fortune_Teller_5000
20
ответ дан 2 December 2019 в 01:24

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

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

9
ответ дан 2 December 2019 в 01:24

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

Похожие вопросы: