我的老师给了我们这个任务来创建我们自己的shell。我们的shell应该被称为rshell,并且应该像常规shell一样工作。
我使用C ++创建了自己的shell。如果您在我创建的shell中键入ls
之类的命令,它会为您提供一个列表,就像您在常规shell中键入ls
一样。
我面临的问题是如何让.sh
文件或脚本文件与我创建的shell一起使用。我注意到当我使用shell运行.sh
文件时,它不会通过我的shell运行.sh
文件。它通过常规shell运行它。如何通过我的shell运行.sh
个文件?
答案 0 :(得分:5)
更改脚本的hash-bang行以指向shell。例如,
#!/usr/local/bin/rshell
或者你的shell可执行文件在哪里。
答案 1 :(得分:4)
正如John已经说过的那样,将shebang更改为指向你的shell。内核将调用shebang中的命令,文件本身作为参数。要演示,请尝试使用#!/bin/cat
的shebang文件。
#!/bin/cat
hello world
它几乎与您键入/bin/cat /path/to/file
的行为相同。
shebang没有PATH查找功能,因此#!yourshell
不能用作shebang。但是,您可以使用env
执行PATH查找,如#!/usr/bin/env yourshell
中所示。 (这种方法适用于不同系统上不同路径的命令,如python。)