bashism

OProfile を動かしてみようと思ってインストールしたら、opcontrol が動かない。なんでだ、と思って原因を探ると、

  • opcontrol は shell script で shebang が #!/bin/sh
  • 良く見ると $((NR_CHOSEN - 1)) という記述がありこれが原因っぽい
  • そして私の Ubuntu では /bin/shbash でなく dash*1

これが、うわさの bashism *2か、と思ったけど、POSIX を見てみたら、

If the shell variable x contains a value that forms a valid integer constant, then the arithmetic expansions "$((x))" and "$(($x))" shall return the same value.

うーむ。まぁ、でも、そこに期待するのはだめだよな。といっても、OProfile は Linux 用のプロファイラで Linux はかなりの高確率で /bin/shbash なんだけど。

*1:Debian 版 ash

*2:bash の機能に依存した shell script