シバン_(Unix)とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > シバン_(Unix)の意味・解説 

シバン (Unix)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/06/27 05:19 UTC 版)

シバンまたはシェバン (: shebang) とはUNIXスクリプト#! から始まる1行目のこと。起動してスクリプトを読み込むインタプリタを指定する。番号記号感嘆符から、ハッシュ・バン(hash bang)またはシェル・バン(shell bang)、シャープ・バン(sharp bang)とも言うが、これらを縮めたシェバンという呼び方が一般的かつ簡素である[2]

パスを直接指定する。Bourne shell の例。

#!/bin/sh
echo 'Hello world!'

Ruby言語のインタプリタ ruby の例(env コマンドを用いたトリック)。

#!/usr/bin/env ruby
puts 'Hello world!'

補足

  • ファイル先頭のシバンを認識するのは、オペレーティングシステム (OS) の execve システムコール(exec を参照)を処理するルーチン中のプログラムローダーである[3]
  • ファイルの先頭がバイト順マークになっているUnicode形式のファイルの場合は動作しない。これはバイト順マークのために、OSのプログラムローダーがシバンを認識できなくなるためである。
  • シバンの参照先は、実行可能バイナリでなければならず、(シバン行のある)スクリプトであってはならない。
  • シバン行の最大文字数、指定可能な引数の数などは環境依存である。また、それを逸脱した場合の動作も環境依存である。特に複数個の引数を与えた場合にどう扱われるかはまちまち(普通に扱われる、2個目以降は無視される、空白の入った1個の引数にされる)であるため、注意が必要である[2]
  • envを用いたトリックはPATH環境変数に依存する。親プロセスが独自にPATHを設定していた場合、想定外の動作をする可能性がある。ruby インタプリタの場合は -x オプションを利用した以下のようなシェルスクリプトに見せかけるトリックを使用したほうが良い。
#!/bin/sh
# -*- ruby -*-
exec ruby -x "$0" "$@"
#!ruby
puts 'Hello world!'
  • ラリー・ウォールのmetaconfigには、シバンを持たないシステムを検出し、スクリプトの先頭の#!/bin/sh: use /bin/shに置換する機能があった[4]
  • ELFでは類似の機能として、プログラムヘッダのINTERP型エントリにインタプリタを記述することが出来る。ここには実行可能バイナリが使用する動的リンクライブラリのパス名を設定する。OSは実行可能バイナリと同時にインタプリタとして指定された動的リンクライブラリもロードして動的リンクの処理をさせる。
    • FreeBSDのカーネルバイナリはインタプリタがカーネルでは使用されないことを逆手に取り、インタプリタとして/red/herringを指定している。[5]

  1. ^ 記事名の制約につき、記事名としての#記号全角井桁
  2. ^ a b The #! magic, details about the shebang/hash-bang mechanism”. www.in-ulm.de. 2022年11月23日閲覧。
  3. ^ システムコールではなく、ライブラリでエミュレートする実装も在った(SVR2ベースのEWS-UXなど)。この場合、スクリプトのsetuidsetgidは無視される。
  4. ^ C Shellからスクリプトを実行された際に、Bourne Shellで実行させる為。
  5. ^ freebsd-src/sys/conf/kern.pre.mk at main · freebsd/freebsd-src”. GitHub. 2024年6月27日閲覧。 リンカへのオプションに--dynamic-linker /red/herringが含まれている。

「シバン (Unix)」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「シバン_(Unix)」の関連用語

シバン_(Unix)のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



シバン_(Unix)のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのシバン (Unix) (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2024 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2024 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2024 GRAS Group, Inc.RSS