If I open a random file (in this case, say `.zshrc`) in a blank vim with no rc file , but with vi compatibility forcing off

    vim -N -u NORC ~/.zshrc

As expected vim will launch and display `.zshrc` without syntax highlighting.

### attempt to enable syntax highlighting 

I have a file containing a collection of `highlight` commands called `darcula.vim` in

    ~/.vim/colors/darcula.vim
    
contents of `~/.vim/colors/darcula.vim`

    "
    " Darcula colorscheme for VIM.
    "
    
    set background=dark
    highlight clear
    
    if exists("syntax_on")
      syntax reset
    endif
    
    let g:colors_name = "darcula"
    
    hi Cursor ctermfg=188 ctermbg=250 cterm=NONE guifg=#2b2b2b guibg=#a9b7c6 gui=NONE
    hi Visual ctermfg=NONE ctermbg=24 cterm=NONE guifg=NONE guibg=#214283 gui=NONE
    hi CursorLine ctermfg=NONE ctermbg=236 cterm=NONE guifg=NONE guibg=#323232 gui=NONE
    hi CursorColumn ctermfg=NONE ctermbg=236 cterm=NONE guifg=NONE guibg=#313335 gui=NONE
     
    [ ... plus many more highlight commands ...]


at vims command line I enter

    :colorscheme darcula

then, to check if the highlight commands have been loaded, I run

    :hi

and yes vim is showing all the `hi` commands from the above `darcula.vim` file have been loaded.  
Then I run

    :syntax enable

and nothing happens


from reading `:h syntax-loading` I thought the syntax enable command sets up filetype autocmd recognition, as verified with:

    :filetype
    filetype detection:ON  plugin:OFF  indent:OFF 


and also sets up autocommand which will run the vim function `SynSet()` on the autocommand event `Syntax`, from the file `$VIMRUNTIME/syntax/synload.vim`

    [...]
    au Syntax *		call s:SynSet()
    
    fun! s:SynSet()
      " clear syntax for :set syntax=OFF  and any syntax name that doesn't exist
      syn clear
      if exists("b:current_syntax")
        unlet b:current_syntax
      endif
    
      let s = expand("<amatch>")
      if s == "ON"
        " :set syntax=ON
        if &filetype == ""
          echohl ErrorMsg
          echo "filetype unknown"
          echohl None
        endif
        let s = &filetype
      elseif s == "OFF"
        let s = ""
      endif
    
      if s != ""
        " Load the syntax file(s).  When there are several, separated by dots,
        " load each in sequence.
        for name in split(s, '\.')
          exe "runtime! syntax/" . name . ".vim syntax/" . name . "/*.vim"
        endfor
      endif
    endfun
 
    [...]



which looks like it will use the filetype and run the appropriate syntax file.  
To me this looks like Ive covered everything, but I obviously havent, why isn't syntax highlighting happening here?