0

堆栈溢出!对于系统编程课程,我构建了一个自定义 shell,自作业结束以来我一直在对其进行调整,希望能取代 bash 和批处理作为我的主要脚本语言。在 Cygwin 中用 C++ 完成,使用 unistd.h 进行管道、分叉等。无论如何,我遇到的一个问题是,在运行我的 shell 时,虽然可执行文件被识别为这样并使用 exec(3) 函数运行,但文本文件(作为脚本运行)被传回 bash 执行。显而易见的答案是把#! 每个脚本中的标头都重定向到我的 shell,但是当在其中打开脚本时,我想将我的 shell 作为默认值运行。

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

4

1 回答 1

0

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

一些例子:

$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
于 2013-02-28T21:33:08.277 回答