OSXのGnu bashで奇妙な問題が見つかりました。 ulimit -f の値は bash 自体によって変更されます。再現可能な小さなコード:
#!/usr/local/bin/bash
ulimit -f 1
echo "Value: $(ulimit -f)"
echo "---"
outstring=$(echo {1..10000})
echo "Value: $(ulimit -f)"
echo "Size = ${#outstring}"
echo "$outstring" > output_file
Output:
Value: 1
---
Value: unlimited
Size = 48893
wc -c output_file
48894 output_file
バッシュバージョン
/usr/local/bin/bash --version | head -n1
GNU bash, version 4.4.19(1)-release (x86_64-apple-darwin17.3.0)
観察:同じコードがUbuntuで期待どおりに機能し、ファイルは作成されません。しかし、OSXでは、ulimitが以下から変更される奇妙な問題が発生します。私は何かを逃しましたか?それとも間違いですか?