下载 Eagle 7.6 后,我想给它添加一个别名。即使./eagle
打开应用程序,bash eagle
结果cannot execute binary file
也是错误。我试过了chmod +x eagle
,但没有用。下载的版本是 64 位版本。
我创建的别名如下:
alias eagle='bash /home/metin/eagle-7.6.0/bin/eagle'
如果你想知道的话,下面是uname -a
输出:
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
提前致谢。
答案1
这是因为eagle
这是一个编译的可执行文件,而不是 bash 脚本。您感到困惑,因为您经常看到bash ./script
建议以运行保存在文本文件中的 bash 脚本的方式运行script
。例如:
$ cat foo.sh
echo "hello!"
$ bash ./foo.sh
hello!
因此,该命令bash ./foo.sh
实际上意味着“运行bash
并要求它执行在文件中找到的命令foo.sh
”。但是,二进制可执行文件不是 shell 脚本,它们不是简单命令的列表,不能以这种方式运行。例如,如果您尝试ls
使用运行二进制文件bash
:
$ bash /bin/ls
/bin/ls: /bin/ls: cannot execute binary file
这bash
告诉您它无法运行您告诉它运行的东西,因为它是一个二进制文件,而不是包含脚本的文本文件。
因此,要解决您的问题,只需bash
从别名中删除,并将其指向eagle
可执行文件的实际位置:
alias eagle='/home/metin/eagle-7.6.0/bin/eagle'
或者,通过将这一行添加/home/metin/eagle-7.6.0/bin/
到您的:$PATH
~/.bashrc
PATH="$PATH:/home/metin/eagle-7.6.0/bin/"
这样您就可以通过/home/metin/eagle-7.6.0/bin/
名称执行任何可执行文件(在本例中是通过运行eagle
),就像您对任何其他可执行文件(如其bash
本身或)执行的操作一样ls
。
答案2
bash
必须从别名中删除,即:
alias eagle='/home/metin/eagle-7.6.0/bin/eagle'
@doug 在评论中解决了这个问题。