2016-05-13 41 views
2

我的老師給了我們這個任務來創建我們自己的shell。我們的shell應該被稱爲rshell,並且應該像普通shell一樣工作。如何讓我自己創建的shell使用.sh文件

我使用C++創建了自己的shell。如果在我創建的shell中輸入類似ls的命令,它會給出一個列表,就像在常規shell中鍵入ls一樣。

我面臨的問題是如何獲得.sh文件或腳本文件以與我創建的shell一起工作。我注意到,當我使用我的shell運行.sh文件時,它不會通過我的shell運行.sh文件。它通過常規shell運行它。我如何使.sh文件通過我的外殼運行?

回答

5

將腳本的散列行更改爲指向您的shell。例如,

#!/usr/local/bin/rshell 

或無論你的shell可執行文件在哪裏。

4

正如約翰所說,改變shebang指向你的shell。內核將以文件本身作爲參數調用shebang中的命令。爲了演示,請嘗試使用文件爲#!/bin/cat的文件。

#!/bin/cat 
hello world 

它的行爲幾乎與輸入/bin/cat /path/to/file的行爲相同。

shebang沒有PATH查找功能,因此#!yourshell不能用作shebang。但是,您可以使用env執行PATH查找,如#!/usr/bin/env yourshell中所述。 (這種方法對於不同系統上不同路徑的命令(比如Python)是首選。)

相關問題