O segundo comando "funciona", mas o histórico não está habilitado para shells não interativos e é por isso que ele não retorna nada em seu script.
$ cat nohistory.sh
#!/bin/bash
set -o | grep history
history
.
$ ./nohistory.sh
history off
.
$ cat history.sh
#!/bin/bash
set -o history
set -o | grep history
history
.
$ ./history.sh
history on
1 set -o | grep history
2 history