On 3/3/19 9:53 PM, L A Walsh wrote:
> In bash 4.4.12, if I have some 'library' like functions that I
> read in at login time, and then later call them -- under trace
> or under bashdb, no source is shown, as bashdb (and for trace, bash)
> doesn't seem to be able to retrieve the original source file name and
> line number where the function was defined.
> 
> I'm attaching/including 2 files that demonstrate this:
> The first I will call 'lib.sh' that is sourced from my
> /etc/profile and my /etc/bashrc if bashrc can't find the
> function.
> 
> ---'lib.sh'---
> #!/bin/bash
> # add numbers passed in and print result to stdout
> addnums() {
>   declare -i sum=0
>   while (($#)); do
>     [[ $1 =~ [-0-9]+ ]] || return -1
>     sum+=$1; shift
>   done
>   printf "%d\n" "$sum"
>   return 0
> }
> declare -fxr addnums
> 
> 
> ---'prog.sh'---
> #!/bin/bash
> # prog: calls addnums on each line read from stdin
> while read ln; do
>   addnums $ln
> done
> ---------------
> 
> After lib.sh has been sourced, then either trace prog.sh
> or try bashdb and single stepping through 'addnums'.

What does `trace' mean here? If I add these lines to prog.sh:

echo $BASH_VERSION
. ./lib.sh
declare -F addnums

I get

4.4.23(7)-release
addnums 3 ./lib.sh



-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    c...@case.edu    http://tiswww.cwru.edu/~chet/

Reply via email to