Para modificar os arquivos de configuração, sed é mais confiável do que o bash:
sed -i 's|^Alias /phppgadmin|Alias /!phppgadmin|' /etc/phppgadmin/apache.conf
Você está perdendo novas linhas porque passou $phppgadmin para echo unquoted, o que significa que o shell divide o conteúdo da variável no espaço em branco. Seu script original teria funcionado se você usou "$phppgadmin" em seu lugar.
Além disso:
-
Não use
'cat', use'<file'ou$(<file). -
${phppgadmin//$/'\n'}destruirá qualquer real$do arquivo de configuração original.
Script reconfigurado, ainda não é tão confiável quanto o comando sed acima:
conf=$(< /etc/phppgadmin/apache.conf)
conf=${conf/Alias \/phppgadmin/Alias \/!phppgadmin}
echo "$conf" > /etc/phppgadmin/apache.conf