POSIX sh準拠のシェルスクリプトを書くときに checkbashisms が便利。
http://sourceforge.net/projects/checkbaskisms/
「#!/bin/sh
なのにbashでしか動かないシェルスクリプトを書くな!」みたいなことはよく言われるわけですが、僕はゆとりなので正直どうでもええやろとか思ったりもしてました。実際、CentOSだと、/bin/sh
は /bin/bash
へのリンクだし、OSXでも /bin/sh
の実態はbashだしね。
しかしそこで立ちふさがるのがUbuntu。Ubuntuだとデフォルトで /bin/sh
は /bin/dash
だったりするわけです。dashはPOSIX準拠のsh実装で、bash独自の記述があると見事に動かない。
とはいえ、それで困るのだったら、デフォルトシェルをbashにしたVMテンプレートを作ればいいんじゃないかって思うやろ。僕もそう思う。
しかしそこで立ちふさがるのがTravisで、TravisのベースイメージはUbuntuなのでdashだし、bashは入ってない。( sudo apt-get install bash
する手はあるけど)
ということで、Travisでちょっとしたシェルスクリプトを実行する際には、POSIX sh準拠のシェルスクリプトを書かないといけない。
そういう時に便利なのが checkbashisms でこれを使うことで、シェルスクリプトがPOSIX準拠になってるかどうか、ある程度チェックしてくれます。
という備忘録。