15. OSHシェル

OMakeはまた、独立して動くコマンドラインインタープリタ osh を含んでいます。これはインタラクティブなシェルとして使うことができます。このシェルはomakeと同様の構文で利用することができ、さらにWin32を含む、omakeがサポートしているすべてのプラットフォーム上で同様の機能を提供します。

15.1 起動時

起動時に、oshは存在しているのであれば ~/.oshrc を読み込みます。このファイルの構文は OMakefile と同様です。また、以下の追加された変数は、osh上で重要な意味を持ちます。

  • prompt

    prompt 変数はコマンドラインプロンプトを指定します。この変数は単純な文字列を指定できます。

    prompt = osh>
    

    あるいは、引数をもたない関数として定義することもできます。

    prompt() =
        return $"<$(USER):$(HOST) $(homename $(CWD))>"
    

    後者のプロンプトの例は以下のようになります。

    <jyh:kenai.yapper.org ~>cd links/omake
    <jyh:kenai.yapper.org ~/links/omake>
    

    プロンプト上にターミナルのエスケープ文字のような『見えない』文字を含ませたい場合は、 prompt-invisible 関数( 10.11.26 prompt-invisible )を使ってラップさせなければなりません。例えば、サポートしているターミナル上でプロンプトを太字にしたい場合、以下のように書くことができます。

    prompt =
       bold-begin = $(prompt-invisible $(tgetstr bold))
       bold-end = $(prompt-invisible $(tgetstr sgr0))
       value $(bold-begin)$"osh>"$(bold-end)
    
  • ignoreeof

    ignoreeoftrue の場合、 osh はターミナルの”end-of-file(EOF)”で終了しません(Unixシステム上では通常 ^D となります)。

15.2 エイリアス

コマンドのエイリアスは Shell. オブジェクトに関数を追加することによって定義できます。以下のエイリアスは -AF オプションを ls コマンドに追加します。

Shell. +=
   ls(argv) =
      "ls" -AF $(argv)

クオートされたコマンドはエイリアス展開の影響を受けません。 "ls" のようにクオーテーションをつけることで、再帰的にエイリアスとなることを防ぎます。

15.3 インタラクティブな構文

osh でのインタラクティブな構文はインデントという一つの例外を除いて、 OMakefile の構文と同様です。まず、インデントされたブロックの前にある行は、必ず行の終わりにコロン:をつける必要があります。次に、 . を行の終わりにつけるか ^D を使うことで、対象のブロックを終了させます。以下の例では、最初の行の if true はコロンをつけていないため、内容のブロックを持つことはできません。

# 以下のifは内容を持ちません
osh>if true
# 以下のifは内容を持ちます
osh>if true:
if>       if true:
if>          println(Hello world)
if>          .
Hello world

インデントされたブロックの中にいる際には、プロンプトをいくらか修正する必要があり、かつ osh は自動的にテキストをインデントすることに注意してください。

また、コロン修飾子はファイルにも適用できますが、必須ではありません。

目次

前のトピックへ

14. 自動設定用の変数と関数

次のトピックへ

A. OMake コマンドラインオプション

このページ

SourceForge.JP

SourceForge.JP

このドキュメントはsourceforge.jpのサーバを利用して提供しています。