Como executar meus programas em C com o Bourne Shell?

2

Não tenho nenhum problema em executar meus programas em C, mudando para o diretório deles e iniciando-os com ./ . No entanto, não sei por que mudar para o diretório e digitar sh [Program Name] me dá este erro:

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

e:

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

Eu li nas páginas de manual bash que o comando sh é um shell que não lê o arquivo .bashrc , então estou um pouco confuso com o porquê eu não posso usá-lo para executar programas que eu feito. Eu usei-o para instalar os drivers da minha impressora de acordo com as instruções na página HP Linux Imaging and Printing.

    
por thinksinbinary 28.06.2016 / 15:34

2 respostas

18

Digitar sh program_name assume que program_name é um script de shell e executa o script (portanto, ele deve estar em uma linguagem sh / bash). Se Fortune_Teller_5000 for um arquivo binário (um programa Compilado C ou mesmo código-fonte C), a execução de sh Fortune_Teller_5000 não funcionará como esperado.

Aqui estão duas maneiras de fazer isso:

  1. Digite sh e, em seguida, ENTER e digite ./Fortune_Teller_5000 (talvez seja necessário cd no diretório correto)
  2. Digite sh -c ./Fortune_Teller_5000 ou sh -c /path/to/folder/Fortune_Teller_5000
por Weboide 28.06.2016 / 15:42
9

A execução de sh [Program Name] instrui o programa sh a executar um shell script chamado [Program Name] , portanto, se esse arquivo for um programa em C, o comando falhará.

A especificação POSX para sh , o interpretador de linguagem de comando padrão declara que o argumento para sh deve ser o “caminho de um arquivo contendo comandos”.

    
por Anthony Geoghegan 28.06.2016 / 15:44