/bin/sh に -f オプションなんてねえ!(疲)

今日、↓みたいなロジックというか記述でエラーになってしまう原因が分からず2時間ぐらいはまってしまった(泣)

#!/bin/sh -f
a=/aaa/bbb/ccc
b=*XXX

#メタキャラを使って、該当ファイルを表示
ls -lt ${a}/${b}
ret=$?
echo ${ret}

動作環境は、Solaris10
本当はコピーなんだけど、全然分からなくて、どんどんデバッグで端折っていったら
こんな形になっちゃった。。
こいつを動かすと、lsが『こんなファイルはありません』という意味不明な事を仰いながら、
戻り値2を返してエラーになる。
コマンドから、ls -lt 〜と入力すると正常に動くし、
なんとshコマンドで動かしてもちゃんと動くが、、、
上のシェルだけで動かすとエラーになる。どうも変数にあるメタキャラが機能せず、
文字として認識されるのがいけないみたい。。


すごく悩んで、shのヘルプを見たら、、実は、-fオプションなんてない事に気づく。
cshは高速起動させる意味のfオプションあるんだけど、、shにはなかった。
(既存のシェルが仕様で、なぜかCシェルとなっているために、クセで書いてしまったのだろうか?
fオプションをなくして、/bin/sh だけにしたら、何事もなくちゃんと動いてくれました。 orz


まあ、良かったけど、、
今までにリリースしたシステム系のシェルで、私が作ったのって、、
みんな-fオプションが付いているんだよなあ(汗)
ま、まあ、ちゃんと動いているし、
私の胸の中にしまっておこう*1

*1:すぐ出てくるか心配だけど