diff --git a/bin/select_version b/bin/select_version
new file mode 100755
index 0000000..320fc59
--- /dev/null
+++ b/bin/select_version
@@ -0,0 +1,111 @@
+#!/bin/bash
+
+# This script is a wrapper for programs that may have alternate versions
+# (e.g. python2, python3).  This wrapper allows the user to influence the
+# selection of the program version by setting the <program name>_VERSION (e.g.
+# PYTHON_VERSION, ROBOT_VERSION, etc.) environment variable.
+
+# Users would be expected to create a link with the base name of the program
+# that points to this file.
+
+# Example:
+# cd openbmc-test-automation/bin
+# ln -s select_version python
+
+# The PATH variable should contain the expanded path to
+# openbmc-test-automation/bin.
+
+# If <program name>_VERSION is blank or not set, then the program version
+# will be whatever the system default program version is.  If <program
+# name>_VERSION is set to a value, then that value will be appened to the name
+# of the program (e.g. if PYTHON_VERSION = "3", then python3 will be used.).
+# If <program name>_VERSION is set to some value that does not correspond to a
+# valid program version for the given system, this program will fail.
+
+
+# Make sure program_name is set.
+program_name="${0##*/}"
+program_uppercase_name=${program_name^^}
+
+
+function get_target_program_path {
+  local target_program_path_var="${1:-target_program_path}" ; shift
+
+  # Get the full path to the "real" program and assign it to the variable
+  # named in target_program_path_var.
+
+  # Description of argument(s):
+  # target_program_path_var         The name of the variable to receive the
+  #                                 result.
+
+  # Example result:
+
+  # /usr/bin/python3
+
+  local version_var_name
+  local alternate_program_name
+  local base_program_path
+  local base_program_name
+  local candidate
+  local candidates
+  local base_file_path
+
+  # The typical use of this program would be to create a link to it like this:
+  # ln -s select_version python
+  # That being the case, get the name of this actual program (rather than the
+  # name of the link to it).
+  base_program_path=$(readlink -f "${0}")
+  base_program_name=${base_program_path##*/}
+
+  # Compose the version_var_name value (e.g. PYTHON_VERSION).
+  version_var_name=${program_uppercase_name}_VERSION
+  # Compose the alternate_program_name (e.g. python3).
+  alternate_program_name=${program_name}${!version_var_name}
+
+  # Now use the "type" built-in to search the PATH variable for a list of
+  # target program candidates.
+  candidates=$(type -ap ${alternate_program_name})
+
+  # Example candidates:
+  # /home/robot/openbmc-test-automation/bin/python
+  # /usr/bin/python
+
+  # In this example, the first candidate is actually a link to
+  # /home/robot/openbmc-test-automation/bin/select_version.  As such it will
+  # be rejected.
+
+  for candidate in ${candidates}
+  do
+    if [ -L "${candidate}" ] ; then
+      # The candidate is a link so we need to see if it's a link to this
+      # program file.
+      base_file_path=$(readlink "${candidate}")
+      [ "${base_file_path}" == "${base_program_name}" ] && continue
+    fi
+
+    # The candidate is NOT a link so it qualifies as the desired target
+    # program path.
+    eval ${target_program_path_var}=\"\${candidate}\"
+    return
+
+  done
+
+}
+
+
+# Main
+
+  get_target_program_path target_program_path
+
+  # Compose program path var name (e.g. PYTHON_PGM_PATH).
+  pgm_path_var_name=${program_uppercase_name}_PGM_PATH
+  # Set and export pgm_path_var_name (e.g. PYTHON_PGM_PATH=/usr/bin/python3).
+  # This value can be used by child programs for debug.
+  eval export ${pgm_path_var_name}=${target_program_path}
+
+  if [ "${1}" == "--print_only" ] ; then
+    echo "${target_program_path}"
+  else
+    ${target_program_path} "${@}"
+  fi
+
