Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何使自己创建的shell与.sh文件一起工作_Linux_Bash_Shell_Unix - Fatal编程技术网

Linux 如何使自己创建的shell与.sh文件一起工作

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行以

我的老师给我们布置了这个任务来创建我们自己的外壳。我们的shell应该被称为rshell,并且应该像普通shell一样工作

<>我用C++创建了自己的shell。如果在我创建的shell中键入类似于
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)上不同路径的命令,首选此方法。)