[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: An xtrace variant
From: |
Chet Ramey |
Subject: |
Re: An xtrace variant |
Date: |
Mon, 29 Jun 2020 11:37:53 -0400 |
User-agent: |
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:68.0) Gecko/20100101 Thunderbird/68.9.0 |
On 6/28/20 9:49 PM, Dale R. Worley wrote:
> Eli Schwartz <eschwartz@archlinux.org> writes:
>> Why not just run bash -x script-name without the bash -l option and
>> without $BASH_ENV set?
>>
>> The first is implicitly true based on your stated command line. The
>> second doesn't seem like a high bar to set, and it's not exactly default
>> behavior... if you really do need $BASH_ENV can't you do the set -x at
>> the end of that file?
>
> That's a good point, and I admit I've never studied out all of the logic
> of Bash init files; I assumed that it executed ~/.bashrc as a matter of
> course.
>
> So as long as I don't need the facilities in .bashrc for the script,
> then "BASH_ENV= bash ..." suffices.
>
> In regard to "can't you do the set -x at the end of that file", (1) it's
> inelegant and a PITA, and (2) it sauses sub-scripts to generate
> debugging output.
If you're in the habit of using BASH_ENV regularly, add something like
[[ -n "$XTRACE" ]] && set -x
to the end of $BASH_ENV, which you only have to do once and is normally a
no-op, and then run your scripts as `XTRACE=y bash scriptname'. That's no
more inelegant than adding an option to bash. If you don't want it to run
more than once, unset XTRACE after `set -x'.
--
``The lyf so short, the craft so long to lerne.'' - Chaucer
``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU chet@case.edu http://tiswww.cwru.edu/~chet/