堆栈溢出!对于系统编程课程,我构建了一个自定义 shell,自作业结束以来我一直在对其进行调整,希望能取代 bash 和批处理作为我的主要脚本语言。在 Cygwin 中用 C++ 完成,使用 unistd.h 进行管道、分叉等。无论如何,我遇到的一个问题是,在运行我的 shell 时,虽然可执行文件被识别为这样并使用 exec(3) 函数运行,但文本文件(作为脚本运行)被传回 bash 执行。显而易见的答案是把#! 每个脚本中的标头都重定向到我的 shell,但是当在其中打开脚本时,我想将我的 shell 作为默认值运行。
在一个稍微相关的注释中,告诉我是否应该单独询问这个问题,但我希望能够在不事先启动 bash 的情况下运行我的 shell。bash --login -i
但是,我相信 Cygwin 通过在批处理文件中运行来启动 UNIX 环境(对于我的 shell 来说是必需的) 。是否有不涉及运行 Linux(VM 或其他)的可能解决方法?