diff --git a/scripts/copy_favicons.bash b/scripts/copy_favicons.bash
new file mode 100644
index 0000000000000000000000000000000000000000..7d107c6f421948371b0129eba36062ec78b4800a
--- /dev/null
+++ b/scripts/copy_favicons.bash
@@ -0,0 +1,82 @@
+#!/usr/bin/env bash
+
+# ==============================================================================
+# title       : copy_favicons.bash
+# description : This script copies favicons from the subfolder "_favicons"
+#               into the jekyll project root folder.
+#               The checks are there to make sure that the parameters given
+#               to this script are correct.
+# date        : 2019-11-07
+# usage       : $ bash ./scripts/copy_favicons.bash "_favicons/" "public/" "/"
+# parameters  : First parameter $1 is the source folder name which contains the
+#               favicons,
+#               second parameter $2 is the target folder name into which the
+#               favicons are copied,
+#               third parameter $3 is the subpath in target folder which
+#               is usually just a slash.
+# notes       : The intention to outsource this script is to collect all shell
+#               scripts in a separate scripts folder instead of putting all
+#               scripts with all its length into the GitLab CI pipeline
+#               configuration yaml file.
+#               Beside that users can manually call this script as well.
+# ==============================================================================
+
+set -e
+
+# Give usage message if number of parameters is not zero or three.
+if [[ "$#" -ne 0 ]] && [[ "$#" -ne 3 ]]
+then
+  echo "copy_favicons.bash:"
+  echo "The wrong number of parameters are given."
+  echo "Usage: Call script with zero or three parameters:"
+  echo "e.g. \$ bash ./scripts/copy_favicons.bash " \
+       "\"_favicons/\" \"public/\" \"/\""
+  exit 1
+fi
+
+# Regex to match folder names with trailing slash.
+patternFolderNameWithSlash="^+\/$"
+
+# Checks that variable is set, folder exists and folder name ends with "/".
+FAVICONS_SOURCE_DIR="_favicons/"
+if [[ -n "${1}" ]] &&
+   [[ "${1}" =~ [patternFolderNameWithSlash] ]] &&
+   [[ -d "${1}" ]]
+then
+  FAVICONS_SOURCE_DIR=${1}
+fi
+
+# Checks that variable is set, folder exists and folder name ends with "/".
+FAVICONS_TARGET_DIR="public/"
+if [[ -n "${2}" ]] &&
+   [[ "${2}" =~ [patternFolderNameWithSlash] ]] &&
+   [[ -d "${2}" ]]
+then
+  FAVICONS_TARGET_DIR=${2}
+fi
+
+# Checks that variable is set, folder exists and sub-path ends with "/"
+# but is not "/" itself which then defaults to "" (empty string) for proper
+# string concatination later on.
+# The parameter of a sub-path is needed for use in GitLab CI pipeline.
+FAVICONS_PROJECT_SUBPATH=""
+if [[ -n "${3}" ]] &&
+   [[ "${3}" =~ [patternFolderNameWithSlash] ]] &&
+   [[ -d "${3}" ]]
+then
+  FAVICONS_PROJECT_SUBPATH=${3}
+fi
+
+# Copy files to target if source files are given.
+if [[ -d ${FAVICONS_SOURCE_DIR} ]]
+then
+  cp ./"${FAVICONS_SOURCE_DIR}"* \
+     ./"${FAVICONS_TARGET_DIR}${FAVICONS_PROJECT_SUBPATH}"
+  echo "copy_favicons.bash:"
+  echo "Copying favicons completed."
+  exit 0
+else
+  echo "copy_favicons.bash:"
+  echo "Favicons folder is missing."
+  exit 1
+fi