2016-05-13 2 views
2

私の先生は私たち自身のシェルを作成するために私たちにこの任務を与えました。私たちのシェルはrshellと呼ばれ、通常のシェルのように動作するはずです。自分自身で作成したシェルを.shファイルで動作させるには

私は自分のシェルをC++で作成しました。作成したシェルにlsのようなコマンドを入力すると、通常のシェルにlsと入力した場合と同様にリストが表示されます。

私が直面している問題は、ファイルまたはスクリプトファイルが作成されたシェルでどのように動作するかです。私は.shファイルをシェルを使って実行したときに、シェルを通して.shファイルを実行していないことに気付きました。それは通常のシェルを通して実行されます。 .shファイルをシェルで実行させるにはどうすればよいですか?

答えて

5

スクリプトのハッシュバング行をシェルを指すように変更します。例えば、

#!/usr/local/bin/rshell 

またはシェルの実行ファイルがどこにあるか。

4

Johnがすでに言ったように、あなたのシェルを指すようにシバンを変更してください。カーネルはファイル自体を引数としてshebangでコマンドを呼び出します。デモを行うには、シバンが#!/bin/catのファイルを試してみてください。

#!/bin/cat 
hello world 

あなたが/bin/cat /path/to/fileを入力したかのように、それはほとんど同じ動作をします。

シバンにはPATHルックアップ機能がないため、#!yourshellはシバンとしては機能しません。ただし、envを使用して、#!/usr/bin/env yourshellのようにPATHルックアップを実行できます。 (このアプローチは、Pythonのような異なるシステム上の異なるパスにあるコマンドに適しています)

関連する問題