我想在 bash 上运行 unity3d 来放置别名和 .desktop 条目。然而,事实证明这更困难。
出现标题错误我尝试命令:
bash path/to/program
搜索网站后发现似乎存在兼容性问题。因此,当我尝试使用文件命令时,输出结果为:
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
而我的系统是x86_64。
然而当我直接进入文件夹并运行该程序时
./program
程序运行通常情况下。
我不明白为什么这会成为我的系统兼容性问题,因为我可以用 ./program 运行该程序,但不能用 bash program 运行。
需要注意的是,我正在使用 zsh,我不确定这是否会造成任何干扰。
答案1
当您执行 时bash some/file
,bash 会读取该文件,根据 bash 的语法规则解析其内容并执行生成的命令。有效文件通常称为“脚本”,其内容与您在 shell 中实际输入的内容非常相似。编译后的程序包含机器指令。您使用 zsh - 您希望它理解机器指令吗?Zsh 不能,bash 也不能。
如果要使用 bash 执行命令,请使用以下-c
选项:
bash -c '/some/command'
但是当命令本身可执行时,这样做就没有什么意义了。如果你可以使用 运行它/some/command
,那么直接使用它。
答案2
在 bash、zsh 或其他 shell 的命令提示符下,您可以写入/path/to/program
或cd /path/to; ./program
两者都应该给出相同的结果..即程序运行。
文件告诉您它是一个二进制可执行程序......而不是某些语言中需要由某些 shell 或其他程序解释的脚本。