シャープ【sharp】
シバン (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]
- FreeBSDのカーネルバイナリはインタプリタがカーネルでは使用されないことを逆手に取り、インタプリタとして
注
- ^ 記事名の制約につき、記事名としての#記号は全角井桁
- ^ a b “The #! magic, details about the shebang/hash-bang mechanism”. www.in-ulm.de. 2022年11月23日閲覧。
- ^ システムコールではなく、ライブラリでエミュレートする実装も在った(SVR2ベースのEWS-UXなど)。この場合、スクリプトのsetuidやsetgidは無視される。
- ^ C Shellからスクリプトを実行された際に、Bourne Shellで実行させる為。
- ^ “freebsd-src/sys/conf/kern.pre.mk at main · freebsd/freebsd-src”. GitHub. 2024年6月27日閲覧。 リンカへのオプションに
--dynamic-linker /red/herring
が含まれている。
シャープ (記号)
(♯! から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/05/22 01:48 UTC 版)

シャープ(英: sharp)は嬰記号(えいきごう)とも呼ばれ、西洋音楽の五線記譜法による楽譜上で半音あげることを意味する変化記号「♯」を指す。形状のよく似た番号記号 (#) とは別記号。イタリア語ではディエジス (diesis)、フランス語ではディエズ (dièse)、ドイツ語ではクロイツ (Kreuz)と呼ばれる。
形状
左右の縦棒は平行に描かれ、左の縦線の右上に右の縦線が来るようにする。交差する斜線は左右の縦線を交差するように描き、2本の斜線は平行になるようにする。平行な斜線は左右にずらさず、同じ位置になるようにする。一般に斜線は縦線よりも太く描かれる。横線を斜線で表記する理由は五線譜の横線と被らないようにするためである。
ダブルシャープ
ダブルシャープは×のような記号で半音あげ、さらに半音あげる記号である[1][2]。重嬰記号とも呼ばれる。

さらにシャープを加えた「トリプルシャープ」もあり、一全音半上げることになる。シャルル=ヴァランタン・アルカンの『四つの時代』の第2楽章などで見ることができる。
ただし、一般にシャープを3つ以上使う意味はなく、別の表記を採用すれば済むのであって、このように3つ以上のシャープが書かれている場合はそのような表記に妥当性が存在するかどうかの検討が必要である。

シャープを用いる固有名詞
番号記号をシャープと呼ぶ固有名詞
- C# - プログラミング言語。発音は「シー・シャープ」。
- F# - プログラミング言語。発音は「エフ・シャープ」。
- J# - プログラミング言語。発音は「ジェイ・シャープ」。
- #ダイヤル - NTTの短縮ダイヤルの商品名。発音は「シャープダイヤル」。
文字コード
記号 | Unicode | JIS X 0213 | 文字参照 | 名称 |
---|---|---|---|---|
♯ | U+266F |
1-2-84 |
♯ ♯ |
シャープ music sharp sign |
𝄪 | U+1D12A |
- |
𝄪 𝄪 |
musical symbol double sharp |
𝄰 | U+1D130 |
- |
𝄰 𝄰 |
musical symbol sharp up |
𝄱 | U+1D131 |
- |
𝄱 𝄱 |
musical symbol sharp down |
𝄲 | U+1D132 |
- |
𝄲 𝄲 |
musical symbol quarter tone sharp |
脚注
関連項目
- >> 「♯!」を含む用語の索引
- ♯!のページへのリンク