
Он заменяется номером истории, даже если я пытаюсь экранировать его с помощью обратной косой черты.
решение1
Если вы просто хотите видеть восклицательный знак в приглашении, экранировать его не нужно.
PS1='foobar!'
Посмотрите, что произойдет.