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