Em circunstâncias em que a string de substituição ou string padrão contenha barras, você pode usar o fato de que o GNU sed permite um delimitador alternativo para o comando substituto. As opções comuns para o delimitador são o caractere de pipe |
ou o hash #
- a melhor opção de caractere delimitador geralmente dependerá do tipo de arquivo que está sendo processado. No seu caso, você pode tentar
sed -i "s#_HOME_DIR_#$HOME_DIR#"
Observe também que você digitou incorretamente o nome da variável $ HOME_DIR (ele não inicia com um sublinhado).
$ HOME_DIR=/opt/my_home
$ echo "_HOME_DIR_/config/data/_DOMAIN_/users.conf" | sed "s#_HOME_DIR_#$HOME_DIR#"
/opt/my_home/config/data/_DOMAIN_/users.conf
Apenas fyi você pode querer evitar o uso de letras maiúsculas para variáveis do usuário em seu script - elas devem ser reservadas para as variáveis do sistema. Além disso, a opção g
não é necessária, a menos que você queira fazer várias substituições em uma única linha.