お問い合わせはコチラから

#!/bin/shのオプション

サイト運営

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 を読み込まずに無視するので、 起動が高速になります。

タイトルとURLをコピーしました