Since bash 4.3 multi-line aliases interact very strangely, especially in 
connection with PROMPT_COMMAND.

1. PROMPT_COMMAND is executed after every line in the alias, rather than just 
before the prompt is drawn:

alias a=$'echo 1\necho2'
PROMPT_COMMAND='echo $HOSTNAME'

$ a
1
home
2
home
$ 

2. If PROMPT_COMMAND contains a command substitution (even one that is not 
executed!) then only the first line of the alias is executed

alias a=$'echo 1\necho2'
PROMPT_COMMAND='echo ${HOSTNAME-$(hostname)}'

$ a
1
home
$ 

3. If an alias contains a command substitution (this is regardless of 
PROMPT_COMMAND being set) something really non-sensical happens.

alias a=$'echo 1 $(id)\necho 2'

$ a
1 2 id
$ 

For the end user, replacing any multi-line aliases with ';' delimited ones 
should probably work just fine.  I can't think of any use-cases where the 
behavior of one style would be different from another so maybe multi-line 
aliases should be disallowed.

Reply via email to