[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help-bash] Why`trap DEBUG` has no effect if it is called inside a f
From: |
Peng Yu |
Subject: |
Re: [Help-bash] Why`trap DEBUG` has no effect if it is called inside a function? |
Date: |
Wed, 22 Apr 2015 22:48:01 -0500 |
On Wed, Apr 22, 2015 at 9:25 PM, Chet Ramey <address@hidden> wrote:
> On 4/21/15 11:53 PM, Peng Yu wrote:
>>> The DEBUG trap is not inherited (set to the default) and restored to its
>>> previous value unless the `functrace' option is set:
>>
>> For `set -o functrace` or `set -T`, the following example shows that
>> commands inside functions inherit the same DEBUG trap as the
>> functions. But why 'f' is printed twice after `set -T`.
>
> When a shell function is executed, the DEBUG trap is run at function entry,
> so debuggers can trap when the function is executed, rather than just
> before the first command in the function body. At that point, BASH_COMMAND
> is still `f'.
>
>
>> For `declare -t`, I don't see there is any difference. Do I use
>> `declare -t` correctly?
>
> Unless you use `-f', each name argument to declare is interpreted as a
> shell variable.
>
>
>> The following example shows that I am able to set the signal for DEBUG
>> within a function so that the signal will be able outside the
>> function. Isn't it logical to allow the reset of the signal in the
>> similar way so that DEBUG signal outside the function will also be
>> reset?
>
> http://lists.gnu.org/archive/html/bug-bash/2015-04/msg00051.html
>
> The same explanation applies. It seems reasonable to make the same
> change for function execution.
So we should expect this bug or "feature" will be fixed in the next
version of bash?
>> Also the man page says "extdebug... 5. Function tracing is enabled:
>> command substitution, shell functions, and subshells invoked with (
>> command ) inherit the DEBUG and RETURN traps." The following example
>> shows no difference on whether extdebug is enabled or not. Why
>> functions in `f` are not trapped with the command set for DEBUG at the
>> beginning of the script?
>
> Bad documentation; it's never done that. Maybe it should.
>
> --
> ``The lyf so short, the craft so long to lerne.'' - Chaucer
> ``Ars longa, vita brevis'' - Hippocrates
> Chet Ramey, ITS, CWRU address@hidden http://cnswww.cns.cwru.edu/~chet/
--
Regards,
Peng