Re: Parameter Expansion
Peter Stephenson <[email protected]>
| Newsgroups | gmane.comp.shells.zsh.devel,gmane.comp.shells.zsh.user |
|---|---|
| Message-ID | <[email protected]> |
> On 15/07/2025 16:01 BST Eric Cook <[email protected]> wrote: > > > On 7/15/25 10:44 AM, Vin Shelton wrote: > > I don't understand the order of parameter expansion. Consider the following example: > > > > zsh -f > > export HOME=/home/acs > > smaug% export SCMROOT=/home/acs/scmroot > > smaug% echo ${SCMROOT:s-$HOME/--} > > > > This yields /home/acs/scmroot", but I expected "scmroot". > > TIA, > > Vin Shelton > > > > The history modifier doesn't create a new context where the parameter > expansion code recurses and resolves any parameters within it's > operands. > It is searching for the literal string $HOME. The fix is to use the parameter system's own substitution code, which does recursively handle parameters. The easiest one to use in this case is: echo ${SCMROOT#$HOME/} There are more general substitution commands but this fits the bill here. pws