A causa comum é que uma (ou ambas) de suas variáveis contém o delimitador (no seu caso / ). Você pode
-
altere o delimitador se você tiver um caractere alternativo que não esteja presente:
sed -e "s#${VAR1}#${VAR2}#g"ou
-
substitua o delimitador nas variáveis:
sed -e "s/${VAR1//\//\/}/${VAR2//\//\/}/g"
Pode haver outras substituições que você também precise fazer em $VAR1 se quiser que elas correspondam como um literal, pois s/// sempre usa expressões regulares.
No entanto, olhando para o que você nos mostrou, parece que tudo o que você está tentando fazer é alterar o valor atribuído a shared_buffers no arquivo de configuração para o valor fixo 8GB . Nesse caso, não há necessidade de quaisquer variáveis:
sed -i -e '/^shared_buffers[ \t]/s/=[ \t]*[^# \t]\+/= 8GB/' /postgresql.conf
Você pode ler isso como em todas as linhas que começam com shared_buffers e um espaço horizontal, em seguida, substitua o primeiro = e a palavra que segue com = 8GB , que é o que você parece querer.