./eagle é executado, no entanto, 'bash eagle' não

3

Após o download do Eagle 7.6, eu queria adicionar um apelido para ele. Mesmo que ./eagle abra o aplicativo, bash eagle results cannot execute binary file error. Eu tentei chmod +x eagle mas isso não ajudou. A versão transferida é a versão de 64 bits.

O alias que criei é o seguinte:

alias eagle='bash /home/metin/eagle-7.6.0/bin/eagle'

Caso você queira saber, aqui está a uname -a output:

Linux mettinoktay 4.4.0-34-generic #53-Ubuntu SMP Wed Jul 27 16:06:39 UTC
2016 x86_64 x86_64 x86_64 GNU/Linux

Obrigado antecipadamente.

    
por Metin Oktay Yılmaz 13.08.2016 / 15:01

2 respostas

20

Isso porque eagle é um executável compilado, não um script bash. Você está ficando confuso porque geralmente vê o bash ./script sugerido como uma maneira de executar o script bash salvo no arquivo de texto script . Por exemplo:

$ cat foo.sh
echo "hello!"
$ bash ./foo.sh
hello!

Portanto, o comando bash ./foo.sh significa "execute bash e peça para executar os comandos encontrados no arquivo foo.sh ". No entanto, executáveis binários não são scripts de shell, eles não são uma lista de comandos simples e não podem ser executados dessa maneira. Por exemplo, se você tentar executar o binário ls usando bash :

$ bash /bin/ls
/bin/ls: /bin/ls: cannot execute binary file

Isso é bash dizendo a você que não pode executar essa coisa que você disse para executar porque é um arquivo binário e não um arquivo de texto contendo um script.

Portanto, para corrigir o seu problema, basta remover o bash do seu alias e, em vez disso, apontá-lo para a localização real do executável eagle :

alias eagle='/home/metin/eagle-7.6.0/bin/eagle'

Como alternativa, adicione /home/metin/eagle-7.6.0/bin/ ao seu $PATH adicionando esta linha ao seu ~/.bashrc :

PATH="$PATH:/home/metin/eagle-7.6.0/bin/"

Isso permitirá que você execute quaisquer arquivos executáveis em /home/metin/eagle-7.6.0/bin/ pelo nome (executando eagle neste caso) como faria com qualquer outro executável, como bash , ou ls .

    
por terdon 13.08.2016 / 20:26
5

bash precisa ser removido do alias, ou seja:

alias eagle='/home/metin/eagle-7.6.0/bin/eagle'

@doug resolveu esse problema nos comentários.

    
por Metin Oktay Yılmaz 13.08.2016 / 15:40

Tags