bug-bash
[Top][All Lists]
Advanced

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

Re: Path of exported variable not set as source


From: Greg Wooledge
Subject: Re: Path of exported variable not set as source
Date: Fri, 26 Jan 2024 09:10:53 -0500

On Fri, Jan 26, 2024 at 03:28:11PM +0200, Ricky Tigg wrote:
> $ export EDITOR='/usr/bin/nano' && source $HOME/.bashrc
> $ echo $EDITOR
> /usr/bin/vim
> 
> Expected: Latest command's output to be "/usr/bin/nano" instaed of
> "/usr/bin/vim".

It's really unclear to me why you expected this.  You're changing
the variable, and then sourcing a file that changes the variable
again.  The last change wins.

It's no different from something like this:

unicorn:~$ a=5 && a=7
unicorn:~$ echo "$a"
7

You can see why the value is set to 7, right?  It was set to 5, and then
set to 7, and the last change is the one that sticks around.

> I unexpectedly get the desired behaviour without invoking 'source'.
> 
> $ export EDITOR='/usr/bin/nano'
> $ echo $EDITOR
> /usr/bin/nano

This *surprises* you?  Why are you surprised that the value you set it
to is the value that it has?

Why are you even calling "source" at all?

> Hopefully, my interpretation of the 'source' command is correct.

I don't think I understand what your interpretation is.  What do you
think 'source' does?

For the record:

unicorn:~$ help source
source: source filename [arguments]
    Execute commands from a file in the current shell.
    
    Read and execute commands from FILENAME in the current shell.  The
    entries in $PATH are used to find the directory containing FILENAME.
    If any ARGUMENTS are supplied, they become the positional parameters
    when FILENAME is executed.
    
    Exit Status:
    Returns the status of the last command executed in FILENAME; fails if
    FILENAME cannot be read.



reply via email to

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