Linux 如何使自己创建的shell与.sh文件一起工作
我的老师给我们布置了这个任务来创建我们自己的外壳。我们的shell应该被称为rshell,并且应该像普通shell一样工作 <>我用C++创建了自己的shell。如果在我创建的shell中键入类似于Linux 如何使自己创建的shell与.sh文件一起工作,linux,bash,shell,unix,Linux,Bash,Shell,Unix,我的老师给我们布置了这个任务来创建我们自己的外壳。我们的shell应该被称为rshell,并且应该像普通shell一样工作 我用C++创建了自己的shell。如果在我创建的shell中键入类似于ls的命令,它将提供一个列表,就像在常规shell中键入ls一样 我面临的问题是如何使.sh文件或脚本文件与我创建的shell一起工作。我注意到,当我使用shell运行.sh文件时,它不会通过shell运行.sh文件。它在普通外壳中运行。如何使.sh文件在shell中运行?更改脚本的hash-bang行以
ls
的命令,它将提供一个列表,就像在常规shell中键入ls
一样
我面临的问题是如何使
.sh
文件或脚本文件与我创建的shell一起工作。我注意到,当我使用shell运行.sh
文件时,它不会通过shell运行.sh
文件。它在普通外壳中运行。如何使.sh
文件在shell中运行?更改脚本的hash-bang行以指向shell。比如说,
#!/usr/local/bin/rshell
或者无论shell可执行文件在哪里。正如John已经说过的,将shebang更改为指向shell。内核将调用shebang中的命令,并将文件本身作为参数。为了演示,请尝试一个shebang为
#的文件/bin/cat
#!/bin/cat
hello world
它的行为与您键入的/bin/cat/path/to/file
几乎相同
shebang没有路径查找功能,因此#!你的外壳
不会像shebang一样工作。但是,您可以使用env
执行路径查找,如#/usr/bin/env yourshell
。(对于位于不同系统(如python)上不同路径的命令,首选此方法。)