-X থেকে আউটপুট স্টাড্রারে যায় না স্টাডআউট। তবে এটিও সমস্যা হতে পারে - প্রচুর স্ক্রিপ্টগুলির স্ট্যাডারের বিষয়বস্তুর উপর কার্যকরী নির্ভরতা থাকবে এবং কোনও কোনও ক্ষেত্রে ডিবাগ এবং স্ট্যাডার স্ট্রিমগুলি একসাথে মিশ্রিত করাতে তার ধরণের অগোছালোতা থাকবে।
বাশ সংস্করণ> 4.1 আলাদা সমাধান দেয়: BASH_XTRACEFD এনভায়রনমেন্ট ভেরিয়েবল আপনাকে একটি ফাইল বর্ণনাকারী নির্দিষ্ট করতে দেয় যা ডিবাগ স্ট্রিমটিতে প্রেরণে ব্যবহৃত হবে। এটি কোনও ফাইল বা পাইপ বা আপনার পছন্দ মতো অন্য কোনও ইউনিক্স-ওয়াই সদৃশ হতে পারে।
# Use FD 19 to capture the debug stream caused by "set -x":
exec 19>/tmp/my-script.log
# Tell bash about it (there's nothing special about 19, its arbitrary)
export BASH_XTRACEFD=19
# turn on the debug stream:
set -x
# run some commands:
cd /etc
find
echo "Well, that was fun."
# Close the output:
set +x
exec 19>&-
# See what we got:
cat /tmp/my-script.log
কিছুটা বেশি ঝাঁকুনির সাথে আপনি অন্যান্য জিনিসগুলিও করতে পারেন - যেমন স্টাডআউট এবং / বা স্টিডিন স্ট্রিমগুলিতে 'টি' করা এবং ডিবাগ আউটপুটযুক্ত ব্যক্তিদের মধ্যে অন্তর্ভুক্ত করা যাতে আপনার লগ আরও সম্পূর্ণ হয়। এ সম্পর্কিত আরও তথ্যের জন্য /programming/3173131/redirect-copy-of-stdout-to-log-file-from-within-bash-script-itself দেখুন ।
বিকল্পগুলির চেয়ে এই পদ্ধতির বড় সুবিধা হ'ল আপনি স্ট্রিডআউট বা স্ট্ডারগুলিতে ডিবাগ আউটপুট ইনজেকশন দিয়ে আপনার স্ক্রিপ্টের আচরণের পরিবর্তনের ঝুঁকি নিচ্ছেন না।