SSHを使っているときにシェルスクリプトを書いて作業しますが、ファイルの先頭に書くおまじないの!/bin/shに付けるオプションをうろ覚えでテキトーに付けていたらドはまりしたのでまとめておきます。
まとめ
結論から申し上げますと、”-f”のオプションは、sh系とcsh系で意味が違います。
csh系で育ってきたので、sh系でも同じように”-f”をつけていたら、ワイルドカードが展開されずにファイルが見つかりませんとなり、原因がわかるまで結構時間がかかりました。
sh/bash系
sh(1) manページ
よく使うオプション
通常
特に何もつけない
#!/bin/sh
デバック時
#!/bin/sh -xv
#!/bin/sh -x
-x
各コマンドを実行する前に、そのコマンドを標準エラー出力に (各コマンドの 前に “+ ” を付加して) 書き出します。デバッグのときに便利です。
#!/bin/sh -v
-v
入力を読み込むごとに標準エラー出力に書き出します。デバッグのときに便利です。
#!/bin/sh -f
-f
パス名展開を行いません。
csh/tcsh系
csh(1) manページ
よく使うオプション
通常
特に何もつけない or “-f”をつける
#!/bin/csh -f
デバック時
#!/bin/csh -xvf
#!/bin/csh -v
-v シェル変数 verbose を設定します。 これにより、ヒストリ置換された状態のコマンド行を表示するようになります。
#!/bin/csh -x
-x シェル変数 echo を設定します。これにより、実行直前に、 実行するコマンドを表示するようになります。
#!/bin/csh -f
~/.tcshrc を読み込まずに無視するので、 起動が高速になります。