I thank the lexer.bash.styling.inside.string information. How to set it ? If Geany color application followed a simple rule, it would NOT depend on language neither of this config. The algorithm now paits string after the identifier_1 color with is for dollar variables. If just the identifier_1 color were applyed ALWAYS to all dollar variables wherever they are, and AFTER strings where colored, the result would be correct, becase identifier_1 (dollar variables) are more important to have a different color than a string.
In php vim does equal geany, treating all as **keyword** color, **not** uses identifier_1 config. But in shell, it is different.
The problem in shell is that before a variable is "dollared" (identifier_1) it was a simple identifier, without dollar. And identifier color is default, but you can set identifier_1 to be magenta in a green string as I do.
# Shell, bash, sh syntax:
variable="value" #here has no dollar, geany reads variable as a simple **identifier** NOT **identifier_1** echo $variable #after the value, it is **identifier_1**, magenta in my case.
echo "a string with $variable" # Geany do not priorize **identifier_1** that was correct in the 2nd line above, painting green (string):
 
See the sh correct syntax (identifier_1 priority) done by vim: 