У меня нет проблемы при запущении моих программ 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.
Ввод sh program_name
предполагает, что program_name является сценарием оболочки и выполняет сценарий (таким образом, это должно быть на sh/bash языке). Если Fortune_Teller_5000
будет двоичный файл (Скомпилированная программа C, или даже C исходный код), то выполнение sh Fortune_Teller_5000
не будет работать как ожидалось.
Вот 2 способа, которыми Вы могли сделать это:
sh
затем ВХОДИТ, и затем тип ./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
должен быть “pathname файла, содержащего commands”.