黒い画面を雰囲気で使っていたので、復習のため、
を読んだ。
そのなかで、「シバン」という単語が出てきて全く記憶になかったので改めて調べ直した。
謎のおまじない”シバン”
CGIとかで先頭行に書かれてるあのコメントのこと。
#!/bin/sh
先頭文字列が#!
で始まっていたら二行目以降を記載されたパスに渡して実行する。上記コメントだと、shが実行される。
Perlのパスが書かれていたらPerlで実行するしRubyのパスが書かれていたらRubyで実行される。
ただし、実行パス自体は不定なことが多いので、#!/usr/bin/env ruby
のように、envコマンドを使うことが多い。
env
コマンドは環境変数を考慮した後に特定のコマンドを実行する。上記だと、環境変数を考慮した上でRubyを実行するので、パスに影響されること無くRubyが実行される。(バージョンは考慮されないけど。)
実行のためには、chmod u+x
でユーザ実行権限を指定する必要がある。
実行権限が付加され、シバンが先頭に存在するファイルは./ファイル名
で実行できる。
権限について(おさらい)
これも雰囲気でやっていたので復習。 https://qiita.com/shisama/items/5f4c4fa768642aad9e06
ls -l
とかやると出てくる権限情報。
-rw-r--r--
1バイト目
2バイト目以降
r
読み取り権限:4w
書き込み権限:2x
実行権限:1
上の権限が3バイトごとに以下の権限に分けて表示される。
- 所有者
- 所有グループ
- その他
で3byteごとに記述する。
たとえばls -l
の結果に-rw-r--r--
が表示されていると、それはファイルの権限644で所有者のみが書き込みできる。
777だとすべての人が直接実行できちゃうので、よほどのことがない限り設定しない。