我如何让自己创build的shell与.sh文件一起工作

我的老师给了我们这个任务来创造我们自己的shell。 我们的shell应该被称为rshell,应该像普通shell一样工作。

我用C ++创build了自己的shell。 如果在我创build的shell中键入一个像ls这样的命令,它会给出一个列表,就像在常规shell中键入ls一样。

我面临的问题是如何让.sh文件或脚本文件与我创build的shell一起工作。 我注意到当我使用shell运行.sh文件时,它不会通过我的shell运行.sh文件。 它通过常规shell运行它。 如何使.sh文件通过我的shell运行?

将脚本的哈希值改为指向你的shell。 例如,

 #!/usr/local/bin/rshell 

或者你的shell可执行文件。

正如约翰已经说过的,改变这个指向你的外壳。 内核将以文件本身作为参数调用shebang中的命令。 为了演示,试试一个带有#!/bin/cat

 #!/bin/cat hello world 

它的行为几乎与输入/bin/cat /path/to/file

shebang没有PATH查找功能,所以#!yourshell不能用作shebang。 但是,您可以使用env来执行PATH查找,如#!/usr/bin/env yourshell 。 (对于不同系统上不同路径的命令,比如python,这种方法是首选。)