Это - плохой стиль ООП.
Не все проблемы лучше всего решены с OO. Некоторые Вы хотите сопоставление с образцом, из которого переключатель является версией бедного человека.
Руководство Autoconf (я не могу вспомнить или точно найти) рекомендует «вручную» выполнить такую замену переменных из файла Makefile.in (или .am, если вы используете Automake):
Makefile. in
[...]
foo.sh: foo.sh.in
$(SED) \
-e 's|[@]prefix@|$(prefix)|g' \
-e 's|[@]exec_prefix@|$(exec_prefix)|g' \
-e 's|[@]bindir@|$(bindir)|g' \
-e 's|[@]datarootdir@|$(datarootdir)|g' \
< "$<" > "$@"
[...]
foo.sh.in
#!/bin/sh
datarootdir=@datarootdir@
du "$datarootdir"