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:39:27 +0100

fixed version, that != instead of ==

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

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

> 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]