下载 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'
Run Code Online (Sandbox Code Playgroud)
如果你想知道,这里是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
Run Code Online (Sandbox Code Playgroud)
提前致谢。
ter*_*don 20
那是因为eagle
是编译的可执行文件,而不是 bash 脚本。您会感到困惑,因为您经常看到bash ./script
建议作为运行保存在文本文件中的 bash 脚本的一种方式script
。例如:
$ cat foo.sh
echo "hello!"
$ bash ./foo.sh
hello!
Run Code Online (Sandbox Code Playgroud)
因此,该命令bash ./foo.sh
实际上意味着“运行bash
并要求它执行文件中找到的命令foo.sh
”。但是,二进制可执行文件不是 shell 脚本,它们不是简单命令的列表,不能以这种方式运行。例如,如果您尝试ls
使用bash
以下命令运行二进制文件:
$ bash /bin/ls
/bin/ls: /bin/ls: cannot execute binary file
Run Code Online (Sandbox Code Playgroud)
这bash
告诉你它不能运行你告诉它运行的东西,因为它是一个二进制文件,而不是一个包含脚本的文本文件。
因此,要解决您的问题,只需bash
从别名中删除,而是将其指向eagle
可执行文件的实际位置:
alias eagle='/home/metin/eagle-7.6.0/bin/eagle'
Run Code Online (Sandbox Code Playgroud)
另外,添加/home/metin/eagle-7.6.0/bin/
到您的$PATH
加入这行到你~/.bashrc
:
PATH="$PATH:/home/metin/eagle-7.6.0/bin/"
Run Code Online (Sandbox Code Playgroud)
这将允许您/home/metin/eagle-7.6.0/bin/
按名称执行任何可执行文件(eagle
在这种情况下通过运行),就像您对任何其他可执行文件(例如它bash
自己或ls
.
bash
必须从别名中删除,即:
alias eagle='/home/metin/eagle-7.6.0/bin/eagle'
Run Code Online (Sandbox Code Playgroud)
@doug 在评论中解决了这个问题。