Were you performing an EFI boot of Windows on a Mac? I've just accomplished the same thing on my Mid-2009 MacBook Pro 5,4
My EFI shell is also non-firmware. I had to put it in the EFI partition and
bless it manually.. Still I was able to use
Set StartupDelay [X] My EFI shell is the
Precompiled x86_64 UEFI Shell v1 binary found at https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface#Obtaining_UEFI_Shell or more directly: https://svn.code.sf.net/p/edk2/code/trunk/edk2/EdkShellBinPkg/FullShell/X64/Shell_Full.efi
I am using the v1 rather than the v2 because v2 is described as being more useful on UEFI (v2) systems unlike my Mac which uses 1.10 EFI firmware.
Set StartupDelay [x] works for me, but don't put it in your startup.nsh! You only need to invoke it once. Otherwise, you will needlessly rewrite your NVRAM after every boot, reducing its lifespan needlessly.
I haven't tried '0' for a startup value. I just needed a smaller delay. For me, my startup.nsh starts Refind. I need to have some time to bypass it if I'm starting the shell from refind. Although, refind has a shell accessible by exiting refind, and there is no nsh startup issued within it.. I am not sure if this shell is enabled by having shell.efi tool, or if it was always there.
help set -b shows good info on the
set command. It states that if there is no NVRAM environment associated with the shell, it will save the variables into
/efi/boot/bootstr.nvr, which means the command should work for anyone without NVRAM.
but that file is never created on my machine, so it's definitely in NVRAM. I proved it by using
which dumps the NVRAM variables (in this case, only for StartupDelay, if it exists)
Hope that helps.