When in doubt about what your shell should do, try running the command in the bash shell and see what it does.

Here is a way to test how bash executes history and !num commands:

$ ls
$ pwd
$ set history = 10    # set bash's history to 10 just for our testing

$ ls                  # run some commands
$ pwd
$  la  -l -a
$ whomai
whomai: Command not found.
$ whoami
$ pwd

$ history             # run the history command to see the last 10 commands
     4	20:24	ls
     5	20:24	pwd
     6	20:24	set history = 10
     7	20:24	ls
     8	20:24	pwd
     9	20:24	ls -l -a
    10	20:24	whomai
    11	20:24	whoami
    12	20:25	pwd
    13	20:25	history

$ !7                    # run command 7 from history (ls)
$ !7                    # run command 7 from history (ls)

$ history
     7	20:24	ls
     8	20:24	pwd
     9	20:24	ls -l -a
    10	20:24	whomai
    11	20:24	whoami
    12	20:25	pwd
    13	20:25	history
    14	20:25	ls        # the ls command from !7
    15	20:25	ls        # the ls command from !7
    16	20:25	history

$ !4                    # try to run command 4 from history 
4: Event not found.     # no command 4 in history list anymore