Consider escaping the expansionSH-2139
The expansion of the highlighted command will occur during definition and not during execution. You may want to use single quote or escape the expansion.
Bad Practice
alias whereami="echo $PWD"
Recommended:
alias whereami='echo $PWD'
With double quotes, this particular alias will be defined as echo /home/me
, so it will always print the same path. This is rarely intended.
By using single quotes or escaping any expansions, you define the alias as echo $PWD
, which will be expanded when we use the alias.
This is the most common use case.
Note that even if you expect the variable to never change, it may still be better to quote it. This prevents a second round of evaluation later:
default="Can't handle failure, aborting"
trap "echo $default; exit 1" err
false
The trap now has a syntax error, because instead of running echo $default
, it runs echo Can't handle ..
which has an unmatched single quote. Avoid early expansion unless you're equally comfortable putting eval
in there.
Exceptions
If you don't mind that your alias definition is expanded at define time (and its result expanded again at evaluation time), you can ignore this warning.