通过切换到 C 程序的目录并使用 启动它们,我可以毫无问题地运行它们./
。但是,我不确定为什么切换到目录然后键入时sh [Program Name]
会出现此错误:
Fortune_Teller_5000: 1: Fortune_Teller_5000: Syntax error: "(" unexpected
和:
./Fortune_Teller_5000: 1: ./Fortune_Teller_5000: Syntax error: "(" unexpected
我在 bash 手册页中看到,该sh
命令是一个不读取文件的 shell .bashrc
,所以我有点困惑,为什么我不能用它来运行我编写的程序。我确实按照 HP Linux 成像和打印页面上的说明使用它来安装打印机驱动程序。
答案1
打字sh program_name
假设程序名称是 shell 脚本并执行该脚本(因此它必须是 sh/bash 语言)。如果Fortune_Teller_5000
是二进制文件(编译后的 C 程序,甚至是 C 源代码),则运行sh Fortune_Teller_5000
将无法按预期进行。
您可以通过以下 2 种方式来实现:
- 输入
sh
然后按 ENTER,然后输入./Fortune_Teller_5000
(您可能需要cd
进入正确的目录) - 键入
sh -c ./Fortune_Teller_5000
或sh -c /path/to/folder/Fortune_Teller_5000
答案2
运行sh [Program Name]
指示sh
程序执行一个名为的 shell 脚本[Program Name]
,如果此文件是 C 程序,则命令将失败。
这sh 的 POSX 规范,标准命令语言解释器指出的参数sh
应该是“包含命令的文件的路径名”。