忍者ブログ
淡々とお仕事のお勉強をするよ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ソースコードの最初の一行は shebang というらしい。今更知った。
sharp-bang を縮めたもので、シバンと読むのが主流らしい。

Windows における shebang

前出の Wikipedia 記事にあるように UNIX のシステム上でインタプリタを呼び出すための記述なんだけど、Windows の場合はどのような扱いになるんだろうか。

小人さんへの置き手紙: shebang とは

Windows の shell は shebang を解釈せず、関連付けやコマンドラインにより実行する。

どうでもいいけど、もう 4年も前の記事か。
Scala の場合、Windows では若干特殊になるようだ。

scala man page

Here is a complete Scala script for Unix:

#!/bin/sh
exec scala "$0" "$@"
!#
Console.println("Hello, world!")
argv.toList foreach Console.println

Here is a complete Scala script for MS Windows:

::#!
@echo off
call scala %0 %*
goto :eof
::!#
Console.println("Hello, world!")
argv.toList foreach Console.println

また、Apache では Windows 上でも shebang を解釈するようである。httpd.conf に変更を加えないならば、以下のように Windows らしく書かねばならない。

#!c:/Python2.5/python.exe -u

もちろんこれではクロスプラットフォームな記述にならないので、Apache がいいように補完してくれることを見越して

#!/usr/bin/env python

と書くこともできる。言うまでもなくこんなパスが Windows 上に用意されているとも限らないので、shebang を無視、あるいは PYTHONPATH を流用するように設定しすることも可能。(A Python for Windows Tutorial より)

/usr/bin/env

shebang として env コマンドのフルパス /usr/bin/env を指定すれば、環境変数から適宜インタプリタを見つけ出すことが可能になる。もちろん、性質上 *nix 系環境限定ではある。
ただ、実際どんな値が入っているかは分からないため、結局環境依存ではある。

はまりやすいポイント

  1. 改行コード
  2. BOM (この2つに関しては shebang 関係ないような気もするが、一応)
  3. 因数の解釈 (#! /usr/bin/env perl -T って書けないんだ - hoag の日記)
PR
この記事にコメントする
HN
Title
Mail
URL
Comment
Pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
忍者ブログ [PR]


Designed by A.com
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
フリーエリア
最新TB
バーコード
ブログ内検索
アクセス解析
プロフィール
HN:
tnmt
性別:
非公開
(image created by E-Mail Icon Generator)