diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7415318837b024122ecc91256584541607881a54..05e7aaff96c0ed0c85ed9fe6223aff2e37226699 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 * * Tests that elementary patching/building works as expected
 * Added consistency check between e3 environment variables and path to `iocsh.bash`. `iocsh.bash` will abort if these are not consistent.
 * Add e3 version infomation to the shell prompt
+* Add option to allow override of automatic addition of `iocInit` to generated startup script
 
 ### Bugfixes
 * `iocsh.bash --help` (and variants) no longer loads tries to load `env.sh`.
@@ -28,6 +29,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 ### Other changes
 * removed legacy code from setE3Env.bash
 * Removed usage of `env.sh` - now there is a check only for seeing if the environment variable `$IOCNAME` is set
+* Fix typos in `iocsh_functions.bash` comments
+* Rearrange usage to match order of options in code
+* Add information about realtime option to usage
 
 ## [3.4.1]
 
diff --git a/require-ess/tools/iocsh_functions.bash b/require-ess/tools/iocsh_functions.bash
index cdbb071f9d67a6ca6f6288d457eb159ea7f7befa..7dd47507c6b9a44b59afada57fc3821e695b7088 100644
--- a/require-ess/tools/iocsh_functions.bash
+++ b/require-ess/tools/iocsh_functions.bash
@@ -45,7 +45,7 @@ function read_file_get_string {
 # First  Two : 00 (EPICS VERSION)
 # Second Two : 00 (EPICS_REVISION)
 # Third  Two : 00 (EPICS_MODIFICATION)
-# Fouth  Two : 00 (EPICS_PATCH_LEVEL)
+# Fourth Two : 00 (EPICS_PATCH_LEVEL)
 
 function basecode_generator() { #@ Generator BASECODE
   #@ USAGE: BASECODE=$(basecode_generator)
@@ -160,8 +160,8 @@ function printIocEnv() {
 # Ctrl+c : OK
 # exit   : OK
 # kill softioc process : OK
-# kill main precess : Enter twice in terminal,
-#                     close softIoc, but STATUP file is remained.
+# kill main process : Enter twice in terminal,
+#                     close softIoc, but STARTUP file is remained.
 #
 
 function softIoc_end() {
@@ -316,6 +316,9 @@ function loadFiles() {
         fi
         echo "seq $1"
         ;;
+      -i | -noinit | --noinit)
+        init=NO
+        ;;
       -r)
         shift
         echo "require $1"
@@ -375,7 +378,11 @@ function loadFiles() {
             set_e3_cmd_top "$file"
             echo "iocshLoad '$file','$subst'"
 
-            if grep -q iocInit "$file"; then
+            # Search for any instance of iocInit at the start of the line.
+            # If found, do not add the iocInit to the startup script. Any
+            # other occurrence of iocInit (e.g. in comments) is not matched
+            # and the script will add an active iocInit.
+            if grep -q "^\s*iocInit\b" "$file"; then
               init=NO
             fi
             ;;
@@ -415,11 +422,16 @@ function help() {
     printf "Options:\n\n"
     printf "  -?, -h, --help   Show this page and exit.\n"
     printf "  -v, --version    Show version and exit.\n"
+    printf "  -rt              Execute in realtime mode.\n"
+    printf "                   (Also -RT, -realtime, --realtime)\n"
     printf "  -c 'cmd args'    Ioc shell command.\n"
-    printf "  -l 'cell path'   Run Ioc with a cell path.\n"
     printf "  -s 'prog m=v'    Sequencer program (and arguments), run with 'seq'.\n"
     printf "                   This forces an 'iocInit' before running the program.\n"
-    printf "  -r module[,ver]  Modue (optionally with version) loaded via 'require'.\n"
+    printf "  -i               Do not add iocInit. This option does not override\n"
+    printf "                   a valid iocInit in the startup script.\n"
+    printf "                   (Also -noinit, --noinit)"
+    printf "  -r module[,ver]  Module (optionally with version) loaded via 'require'.\n"
+    printf "  -l 'cell path'   Run Ioc with a cell path.\n"
     printf "  -dg              Run with debugger gdb.\n"
     printf "  -dv              Run with valgrind.\n"
     printf "  -n               Run with 'nice --10' (requires sudo).\n"
@@ -436,7 +448,8 @@ function help() {
     printf "  iocsh.bash st.cmd\n"
     printf "  iocsh.bash my_database.template P=XY M=3\n"
     printf "  iocsh.bash -r my_module,version -c 'initModule()'\n"
-    printf "  iocsh.bash -c 'var requireDebug 1' st.cmd\n\n"
+    printf "  iocsh.bash -c 'var requireDebug 1' st.cmd\n"
+    printf "  iocsh.bash -i st.cmd\n\n"
 
   } >&2
   exit