shebang
シェバン, hash bang, シバン
hash bangと呼んでるのはここで見た
scriptを読み込むinterpreterを指定する
一番よく見かけるのは#!/bin/shなので、シェバンとは「実行するshellの指定をする」ものだ、という感じがするが実はもう少し広い
指定してない場合はログインシェルで実行される
zsh使っている人ならzshで実行される
scriptを読み込むinterpreterを指定するの意味
例えば、#!/usr/bin/pythonと書くと、Python scriptを書いているのと同じになる
code:sh
#!/sr/bin/ptyhon
# ↓これはPythonのコード
print('Hello World')
ただし、これは#!/usr/bin/env pythonのように書く方が良い
ref #!/usr/bin/env hoge
例えば、node2nixでbuildしたものは以下のような内容
nix store内のnodejsがshebangとして指定されている
code:hoge(js)
#!/nix/store/19kr3316yibg1zgawny2dvz0ifg5dyyk-nodejs-12.22.7/bin/node
"use strict";
// This file is called from npm bin script. See package.json for details
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
...
よく見るやつも同じノリで、#!/bin/bashと書かれている
Haskellのstackもこれでscriptingできる ref
実行するShellの指定をする
一番良く見かけるmrsekut.icon
Shellの種類はいくつかあるので文法に互換性がない場合は動かないことがある
シェバンを指定しておくことでそれを防ぐ
例
#!/bin/bash
https://sechiro.hatenablog.com/entry/20120806/1344267619
#!/bin/bashと#!/bin/shの違い