Não é possível executar o arquivo binário com o programa bash, mas é executado com ./program

1

Eu quero rodar o unity3d no meu bash para colocar as entradas alias e .desktop. No entanto, isso prova ser mais difícil.

Aparece o erro do título Eu tento o comando:

bash path/to/program 

Pesquisando pelo site, parece ser um problema de compatibilidade. Então, quando eu tento o comando file, a saída é:

program: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=8020f3d60eff5b41c53e6b60a9e2d43802e28f93, not stripped

enquanto meu sistema é x86_64.

No entanto quando vou diretamente para a pasta e executo o programa como

./program

o programa é executado normalmente .

Eu não vejo como isso pode ser um problema de compatibilidade com o meu sistema quando eu posso rodar o programa com ./program mas não com o programa bash

Como nota, estou usando o zsh e não tenho certeza se isso interfere de alguma forma.

    
por user2832080 21.01.2017 / 19:01

2 respostas

4

Quando você faz bash some/file , o bash lê esse arquivo, analisa seu conteúdo de acordo com as regras de sintaxe do bash e executa os comandos resultantes. Arquivos válidos são geralmente chamados de "scripts", e seu conteúdo é muito parecido com o que você realmente digita em um shell. Programas compilados contêm instruções de máquina. Você usa zsh - você espera que ele entenda as instruções da máquina? Zsh não, e nem faz bash.

Se você quiser usar o bash para executar um comando, use a opção -c :

bash -c '/some/command'

Mas não há muito sentido em fazê-lo quando o comando em si é executável. Se você puder executá-lo usando /some/command , use-o diretamente.

    
por muru 21.01.2017 / 19:51
1

No prompt de comando no bash, zsh ou outro shell, você pode escrever /path/to/program ou cd /path/to; ./program ambos devem dar o mesmo resultado .. que o programa é executado.

O arquivo informa que é um programa executável binário ... em oposição a um script em algum idioma, ele precisa ser interpretado por algum shell ou outro programa.

    
por Soren A 21.01.2017 / 19:46