Simon Geard wrote:
Simon, thank you very much. With your explanation I was able to understand what the script does. Your explanation was much clearer than any I had encountered before I read your message.On Thu, 2005-04-07 at 19:56 -0500, Dan McGhee wrote:
I also cannot mentally expand the expression
$PATHVARIABLE="${!PATHVARIABLE:+:${!PATHVARIABLE}}"
Can't blame you - that's pretty ugly. I've seen (and written) worse though, so let's break it down:
The exclamation marks are like a pointer - when you see the notation !PATHVARIABLE, replace it with the value of $PATHVARIABLE. So if $PATHVARIABLE was equal to the string "PATH", it would be as if the following command was used instead (note the exclamation marks are gone):
$PATHVARIABLE="${PATH:+:${PATH}}"
Of course, the left side of the assignment has a dollar sign next to it, so that also gets expanded. So now, you have:
PATH="${PATH:+:${PATH}}"
That then becomes a simple case of the alternate value syntax, although the presence of the second colon makes it look a bit more complicated. Basically, if the variable named before the first colon is set, then it replaces it with the value after the first colon, which would be the string ":$PATH".
In short, it takes the variable named in $PATHVARIABLE, and if it's set to something, prepends a colon.
Simon.
As I journey through BLFS, I'm going to keep my eyes peeled for a script that uses PATHVARIABLE, since that variable gets exported at the end of 'pathremove' but reset in the other functions of /etc/profile.
Thanks again.
Dan -- http://linuxfromscratch.org/mailman/listinfo/blfs-support FAQ: http://www.linuxfromscratch.org/blfs/faq.html Unsubscribe: See the above information page
