[Top][All Lists]

[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/

reply via email to

[Prev in Thread] Current Thread [Next in Thread]