Linux 调用二进制文件的整个路径时无法执行二进制文件

Linux 调用二进制文件的整个路径时无法执行二进制文件,linux,bash,Linux,Bash,我正在尝试在LinuxUbuntu16中使用bison实用程序。二进制文件位于由sudo apt get bison命令设置的/usr/bin/bison处 然而,当我从bash调用bison时,它看起来是可以工作的,但是如果我使用它的路径调用bison,我会得到以下错误(可以在屏幕截图中看到) 请注意,二进制文件的路径是通过*type-a bison* 此外,除了/usr/bin中的bison二进制文件外,还有另一个名为bison.yacc的文件,其中包含: #! /bin/sh exec

我正在尝试在LinuxUbuntu16中使用bison实用程序。二进制文件位于由
sudo apt get bison
命令设置的/usr/bin/bison处

然而,当我从bash调用bison时,它看起来是可以工作的,但是如果我使用它的路径调用bison,我会得到以下错误(可以在屏幕截图中看到)

请注意,二进制文件的路径是通过
*type-a bison*

此外,除了/usr/bin中的bison二进制文件外,还有另一个名为bison.yacc的文件,其中包含:

#! /bin/sh
exec '/usr/bin/bison' -y "$@"

这个问题有什么原因吗?任何解决方案?

您不能将
(或其有效别名
source
)与二进制文件一起使用

/
源代码
用于在当前shell的上下文中执行shell代码

二进制文件只能在子进程中运行,因此您可以直接调用它们:

exec
也会创建一个新进程,但它会替换当前shell

#! /bin/sh
exec '/usr/bin/bison' -y "$@"
/usr/bin/bison