如何在自定义shell中检测脚本文件与可执行文件

时间:2013-02-28 21:27:37

标签: c++ shell unix cygwin

计算器!对于系统编程课程,我构建了一个自定义shell,自从作业结束以来我一直在调整它,希望将bash和batch替换为我的主要脚本语言。在Cygwin中用C ++完成使用unistd.h进行管道,分叉等。无论如何,我遇到的一个问题是,在运行我的shell时,可执行文件被识别为并运行exec(3)函数,文本文件(作为脚本运行)被传递回bash以供执行。显而易见的答案就是放#!每个脚本中的标题都会重定向到我的shell,但是当我在其中打开脚本时,我想将shell作为默认值运行。

在一个稍微相关的说明中,告诉我是否应该单独询问,但我希望能够在不事先启动bash的情况下运行我的shell。但是,我相信Cygwin通过运行bash --login -i来启动UNIX环境(我的shell必需) 在批处理文件中。是否有可能的解决方法不涉及运行Linux(VM或其他)?

1 个答案:

答案 0 :(得分:0)

命令'file'可以帮助您识别要检查的'文件'的类型

一些例子:

$file lavtc.sh
lavtc.sh: POSIX shell script, ASCII text executable, with very long lines

$file java
/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x5cb4cd120c014a335b60544ef209526e8a86f34c, stripped