Webデザイナーの為の「本当は怖くない」“黒い画面”入門を読んだ

黒い画面を雰囲気で使っていたので、復習のため、

fjord.jp

を読んだ。

そのなかで、「シバン」という単語が出てきて全く記憶になかったので改めて調べ直した。

謎のおまじない”シバン”

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 読み取り権限:4
  • w 書き込み権限:2
  • x 実行権限:1

上の権限が3バイトごとに以下の権限に分けて表示される。

  • 所有者
  • 所有グループ
  • その他

で3byteごとに記述する。

たとえばls -lの結果に-rw-r--r--が表示されていると、それはファイルの権限644で所有者のみが書き込みできる。

777だとすべての人が直接実行できちゃうので、よほどのことがない限り設定しない。