help-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: small problem with BASH_SOURCE and PATH


From: Alex fxmbsw7 Ratchev
Subject: Re: small problem with BASH_SOURCE and PATH
Date: Fri, 11 Feb 2022 19:26:30 +0100

if [[ ${t:=$BASH_SOURCE} != /* ]]; then
if [[ $t != */* ]]; then
r=$PWD/${t%/*}; else
r=$PWD/; fi; else
r=${t%/*}; fi

i made an assignment only version prior to this but it doesnt work yet
a new try maybe...

On Fri, Feb 11, 2022 at 6:43 PM Alex fxmbsw7 Ratchev <fxmbsw7@gmail.com>
wrote:

>
>
> On Fri, Feb 11, 2022 at 5:52 PM Greg Wooledge <greg@wooledge.org> wrote:
>
>> On Fri, Feb 11, 2022 at 01:57:51PM +0100, Alex fxmbsw7 Ratchev wrote:
>> > i think this is a bash bug issue
>> >
>> > when i type -p randurl.gawk first it works
>>
>> What does it *say*?
>>
>
> i didnt watch, i just error checked it for exec printf err
>
>>
>> > so i suppose a hash -r should do
>>
>> Why would removing a hash entry in your interactive shell affect the PATH
>> used by a script?
>>
>
> i think it was as u explain later not an absolute path indeed
>
>
>> > On Thu, Feb 10, 2022 at 11:36 PM Alex fxmbsw7 Ratchev <
>> fxmbsw7@gmail.com>
>> > wrote:
>> > >
>> > > my=/tmp/$SRANDOM ; mkdir -p $my/bin ; cd $my ; printf 'yes | head -3'
>> > >bin/ye ; printf >script %s\\n '#!/usr/bin/env -S
>> > > bash' 'PATH=$PATH:${BASH_SOURCE%/*}/bin' 'ye' ; chmod +x * */* ; bash
>> > script ; ./script
>> > > script: line 3: ye: command not found
>> > > y
>> > > y
>> > > y
>>
>> Basically you are assuming that BASH_SOURCE contains something useful
>> enough to incorporate into the PATH variable during the execution of
>> a script.  And despite getting this error message, you have not even
>> attempted to look at the values of BASH_SOURCE or PATH to determine
>> what's actually happened.
>>
>
> indeed i did not, i was and am tired
> this is some specific psychic issue with this issue with debugging, when
> having headpain.. ah well i hoped for good and there u mailed
> btw its ./script and ./bin/ so where script is its bin/ dir ( supposently
> )
>
> unicorn:~$ printf '%s\n' >foo '#!/bin/bash' 'declare -p BASH_SOURCE';
>> chmod +x foo
>> unicorn:~$ ./foo
>> declare -a BASH_SOURCE=([0]="./foo")
>> unicorn:~$ bash foo
>> declare -a BASH_SOURCE=([0]="foo")
>>
>> As you can see, the value of BASH_SOURCE changes depending on how you
>> invoke the script.
>>
>> Consider what happens when you perform ${BASH_SOURCE%/*} on each of these
>> values.  And then what happens when you put the results into PATH.
>>
>
> i remember having this solution, when a path didnt have beginning slash
> then prepend $PWD/ to it
> i just forgot completly about it, gotta code it in, either this or
> realpath i better not touch realpath for portability
>


reply via email to

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