スクリプトで、インタラクティブシェルから起動されたのか、バッチで起動されたのか判断したい事が稀にある。
test コマンドに -t というオプションがある。
このオプションは、ファイルデスクリプタ番号が端末に関連付けられていれば真を返す。
sample
if [ -t 0 ];then
echo its terminal session!
else
echo its not terminal session...
fi
0,1,2のstdin, stdout, stderr が端末に関連付けられているかを確認すればそれがインタラクティブセッションかどうか確認できる。
っていう事を、FreeBSDのportsnapコマンドのfetchサブコマンドがやってました。