我的老师给了我们这个任务来创造我们自己的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,这种方法是首选。)