環境

  • Xubuntu 18.04 LTS
  • bash 4.4.20

やりたいこと

シェルスクリプトの標準出力/標準エラー出力をファイルに出力したいです。

hoge.sh

#!/bin/bash -ex

echo "hello"

起きたこと

shellscriptを直接実行したときと、bashコマンドで実行したときで、出力されたファイルの中身が異なっていました。
具体的には、bash -xで表示される実行コマンドが、ファイルに出力されていませんでした。

実行したコマンド

$ ./hoge.sh > out1.txt 2>&1

$ /bin/bash ./hoge.sh > out2.txt 2>&1

ファイルの中身

out1.txt

+ echo hello
hello

out2.txt

hello

質問

bash hoge.shだと、bash -xの結果がファイルに出力されないのは、なぜでしょうか?
また、どうすればbash hoge.shでも出力できるようになるでしょうか?

bashコマンドを使う必要性はありませんが、興味として知っておきたいです。

シェルスクリプトで実行した結果を変数の仲間で含めてすべて標準出力してくれます。