From 9c5180062ae12f341979b04fe1431b6998350f7f Mon Sep 17 00:00:00 2001
From: Sean Crosby <scrosby@unimelb.edu.au>
Date: Fri, 2 Dec 2022 16:01:48 +1100
Subject: [PATCH] Update shell scripts

This takes into account that the script being called may actually be a
symlink to the install location

Also fixed location of aterm when being downloaded in various scripts
---
 src/main/scripts/unix/aterm                       | 13 +++++++------
 src/main/scripts/unix/aterm-download              | 13 +++++++------
 src/main/scripts/unix/aterm-gui                   | 15 ++++++++-------
 src/main/scripts/unix/aterm-import                | 13 +++++++------
 .../unix/download-id-shell-script-url-create      | 13 +++++++------
 .../download-namespace-shell-script-url-create    | 13 +++++++------
 src/main/scripts/unix/file-list                   |  2 +-
 src/main/scripts/unix/instrument-upload-list      |  2 +-
 .../scripts/unix/instrument-upload-missing-find   |  2 +-
 src/main/scripts/unix/scp-get                     |  2 +-
 src/main/scripts/unix/scp-put                     |  2 +-
 src/main/scripts/unix/sftp-get                    |  2 +-
 src/main/scripts/unix/sftp-put                    |  2 +-
 src/main/scripts/unix/unimelb-mf-archive          |  4 ++--
 src/main/scripts/unix/unimelb-mf-check            |  2 +-
 src/main/scripts/unix/unimelb-mf-download         |  2 +-
 src/main/scripts/unix/unimelb-mf-import-archive   |  2 +-
 .../scripts/unix/unimelb-mf-instrument-upload     |  2 +-
 src/main/scripts/unix/unimelb-mf-perf             |  4 ++--
 src/main/scripts/unix/unimelb-mf-upload           |  2 +-
 20 files changed, 59 insertions(+), 53 deletions(-)

diff --git a/src/main/scripts/unix/aterm b/src/main/scripts/unix/aterm
index 963c88c..872b301 100755
--- a/src/main/scripts/unix/aterm
+++ b/src/main/scripts/unix/aterm
@@ -25,12 +25,13 @@ download() {
 # check if java exists
 [[ -z $(which java) ]] && echo "Error: cannot find java." 1>&2 && exit 1
 
+SCRIPTDIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
 # probe existing aterm.jar
-[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=$(dirname ${BASH_SOURCE[0]})/../../lib/aterm.jar
+[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM="$SCRIPTDIR/../../lib/aterm.jar"
 [[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=./aterm.jar
 [[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=${ATERM_HOME}/aterm.jar
-[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=$(dirname ${BASH_SOURCE[0]})/../../aterm.jar
-[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=$(dirname ${BASH_SOURCE[0]})/aterm.jar
+[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM="$SCRIPTDIR/../../aterm.jar"
+[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM="$SCRIPTDIR/aterm.jar"
 [[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=/opt/mediaflux/bin/aterm.jar
 
 # download aterm.jar
@@ -52,9 +53,9 @@ fi
 # probe existing mflux.cfg
 [[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG=$./mflux.cfg
 [[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG=${ATERM_HOME}/mflux.cfg
-[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG=$(dirname ${BASH_SOURCE[0]})/../../config/mflux.cfg
-[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG=$(dirname ${BASH_SOURCE[0]})/../../mflux.cfg
-[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG=$(dirname ${BASH_SOURCE[0]})/mflux.cfg
+[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$SCRIPTDIR/../../config/mflux.cfg"
+[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$SCRIPTDIR/../../mflux.cfg"
+[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$SCRIPTDIR/mflux.cfg"
 [[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && echo "Error: cannot find ${ATERM_HOME}/mflux.cfg." 1>&2 && exit 1
 
 
diff --git a/src/main/scripts/unix/aterm-download b/src/main/scripts/unix/aterm-download
index 13d2a7d..e8d0eb9 100755
--- a/src/main/scripts/unix/aterm-download
+++ b/src/main/scripts/unix/aterm-download
@@ -25,12 +25,13 @@ download() {
 # check if java exists
 [[ -z $(which java) ]] && echo "Error: cannot find java." 1>&2 && exit 1
 
+SCRIPTDIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
 # probe existing aterm.jar
-[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=$(dirname ${BASH_SOURCE[0]})/../../lib/aterm.jar
+[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM="$SCRIPTDIR/../../lib/aterm.jar"
 [[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=./aterm.jar
 [[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=${ATERM_HOME}/aterm.jar
-[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=$(dirname ${BASH_SOURCE[0]})/../../aterm.jar
-[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=$(dirname ${BASH_SOURCE[0]})/aterm.jar
+[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM="$SCRIPTDIR/../../aterm.jar"
+[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM="$SCRIPTDIR/aterm.jar"
 [[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=/opt/mediaflux/bin/aterm.jar
 
 # download aterm.jar
@@ -52,9 +53,9 @@ fi
 # probe existing mflux.cfg
 [[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG=$./mflux.cfg
 [[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG=${ATERM_HOME}/mflux.cfg
-[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG=$(dirname ${BASH_SOURCE[0]})/../../config/mflux.cfg
-[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG=$(dirname ${BASH_SOURCE[0]})/../../mflux.cfg
-[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG=$(dirname ${BASH_SOURCE[0]})/mflux.cfg
+[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$SCRIPTDIR/../../config/mflux.cfg"
+[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$SCRIPTDIR/../../mflux.cfg"
+[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$SCRIPTDIR/mflux.cfg"
 [[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && echo "Error: cannot find ${ATERM_HOME}/mflux.cfg." 1>&2 && exit 1
 
 
diff --git a/src/main/scripts/unix/aterm-gui b/src/main/scripts/unix/aterm-gui
index 9bb64dd..4d9a91a 100755
--- a/src/main/scripts/unix/aterm-gui
+++ b/src/main/scripts/unix/aterm-gui
@@ -25,12 +25,13 @@ download() {
 # check if java exists
 [[ -z $(which java) ]] && echo "Error: cannot find java." 1>&2 && exit 1
 
+SCRIPTDIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
 # probe existing aterm.jar
-[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=$(dirname ${BASH_SOURCE[0]})/../../lib/aterm.jar
+[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM="$SCRIPTDIR/../../lib/aterm.jar"
 [[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=./aterm.jar
 [[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=${ATERM_HOME}/aterm.jar
-[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=$(dirname ${BASH_SOURCE[0]})/../../aterm.jar
-[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=$(dirname ${BASH_SOURCE[0]})/aterm.jar
+[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM="$SCRIPTDIR/../../aterm.jar"
+[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM="$SCRIPTDIR/aterm.jar"
 [[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=/opt/mediaflux/bin/aterm.jar
 
 # download aterm.jar
@@ -52,11 +53,11 @@ fi
 # probe existing mflux.cfg
 [[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG=$./mflux.cfg
 [[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG=${ATERM_HOME}/mflux.cfg
-[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG=$(dirname ${BASH_SOURCE[0]})/../../config/mflux.cfg
-[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG=$(dirname ${BASH_SOURCE[0]})/../../mflux.cfg
-[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG=$(dirname ${BASH_SOURCE[0]})/mflux.cfg
+[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$SCRIPTDIR/../../config/mflux.cfg"
+[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$SCRIPTDIR/../../mflux.cfg"
+[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$SCRIPTDIR/mflux.cfg"
 [[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && echo "Error: cannot find ${ATERM_HOME}/mflux.cfg." 1>&2 && exit 1
 
 
 # execute command via aterm
-java -jar "-Dmf.cfg=$MFLUX_CFG" "$MFLUX_ATERM"
\ No newline at end of file
+java -jar "-Dmf.cfg=$MFLUX_CFG" "$MFLUX_ATERM"
diff --git a/src/main/scripts/unix/aterm-import b/src/main/scripts/unix/aterm-import
index 2ab07eb..177e32a 100755
--- a/src/main/scripts/unix/aterm-import
+++ b/src/main/scripts/unix/aterm-import
@@ -25,12 +25,13 @@ download() {
 # check if java exists
 [[ -z $(which java) ]] && echo "Error: cannot find java." 1>&2 && exit 1
 
+SCRIPTDIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
 # probe existing aterm.jar
-[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=$(dirname ${BASH_SOURCE[0]})/../../lib/aterm.jar
+[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM="$SCRIPTDIR/../../lib/aterm.jar"
 [[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=./aterm.jar
 [[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=${ATERM_HOME}/aterm.jar
-[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=$(dirname ${BASH_SOURCE[0]})/../../aterm.jar
-[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=$(dirname ${BASH_SOURCE[0]})/aterm.jar
+[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM="$SCRIPTDIR/../../aterm.jar"
+[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM="$SCRIPTDIR/aterm.jar"
 [[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=/opt/mediaflux/bin/aterm.jar
 
 # download aterm.jar
@@ -52,9 +53,9 @@ fi
 # probe existing mflux.cfg
 [[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG=$./mflux.cfg
 [[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG=${ATERM_HOME}/mflux.cfg
-[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG=$(dirname ${BASH_SOURCE[0]})/../../lib/mflux.cfg
-[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG=$(dirname ${BASH_SOURCE[0]})/../../mflux.cfg
-[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG=$(dirname ${BASH_SOURCE[0]})/mflux.cfg
+[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$SCRIPTDIR/../../lib/mflux.cfg"
+[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$SCRIPTDIR/../../mflux.cfg"
+[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$SCRIPTDIR/mflux.cfg"
 [[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && echo "Error: cannot find ${ATERM_HOME}/mflux.cfg." 1>&2 && exit 1
 
 # show usage if no arguments specified
diff --git a/src/main/scripts/unix/download-id-shell-script-url-create b/src/main/scripts/unix/download-id-shell-script-url-create
index 2628871..46da7a0 100755
--- a/src/main/scripts/unix/download-id-shell-script-url-create
+++ b/src/main/scripts/unix/download-id-shell-script-url-create
@@ -40,16 +40,17 @@ usage() {
 # check java
 [[ -z $(which java) ]] && echo "Error: cannot find java." 1>&2 && exit 1
 
+SCRIPTDIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
 # check mflux.cfg
 [[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="./mflux.cfg"
 [[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="${HOME}/.Arcitecta/mflux.cfg"
-[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$(dirname ${BASH_SOURCE[0]})/../../config/mflux.cfg"
-[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$(dirname ${BASH_SOURCE[0]})/../../mflux.cfg"
-[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$(dirname ${BASH_SOURCE[0]})/mflux.cfg"
+[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$SCRIPTDIR/../../config/mflux.cfg"
+[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$SCRIPTDIR/../../mflux.cfg"
+[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$SCRIPTDIR/mflux.cfg"
 [[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && echo "Error: cannot find ${HOME}/.Arcitecta/mflux.cfg." 1>&2 && exit 1
 
 # check aterm.jar
-[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM="$(dirname ${BASH_SOURCE[0]})/../../lib/aterm.jar"
+[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM="$SCRIPTDIR/../../lib/aterm.jar"
 [[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM="${HOME}/.Arcitecta/aterm.jar"
 [[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=/opt/mediaflux/bin/aterm.jar
 [[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=./aterm.jar
@@ -63,9 +64,9 @@ if [[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]]; then
     WGET=$(which wget)
     [[ -z "${CURL}" && -z "${WGET}" ]] && echo "Error: cannot download aterm.jar. Found no curl or wget." 1>&2 && exit 1
     if [[ ! -z "${CURL}" ]]; then
-        curl -f --create-dirs -k -o "$(dirname $0)/aterm.jar" "${ATERM_URL}"
+        curl -f --create-dirs -k -o "${MFLUX_ATERM}" "${ATERM_URL}"
     else
-        wget --no-check-certificate -O "$(dirname $0)/aterm.jar" "${ATERM_URL}"
+        wget --no-check-certificate -O "${MFLUX_ATERM}" "${ATERM_URL}"
     fi
     if [[ $? -ne 0 ]]; then
         echo "Error: failed to download aterm.jar"
diff --git a/src/main/scripts/unix/download-namespace-shell-script-url-create b/src/main/scripts/unix/download-namespace-shell-script-url-create
index 7167e63..51b6a4a 100755
--- a/src/main/scripts/unix/download-namespace-shell-script-url-create
+++ b/src/main/scripts/unix/download-namespace-shell-script-url-create
@@ -33,16 +33,17 @@ usage() {
 # check java
 [[ -z $(which java) ]] && echo "Error: cannot find java." 1>&2 && exit 1
 
+SCRIPTDIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
 # check mflux.cfg
 [[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="./mflux.cfg"
 [[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="${HOME}/.Arcitecta/mflux.cfg"
-[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$(dirname ${BASH_SOURCE[0]})/../../config/mflux.cfg"
-[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$(dirname ${BASH_SOURCE[0]})/../../mflux.cfg"
-[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$(dirname ${BASH_SOURCE[0]})/mflux.cfg"
+[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$SCRIPTDIR/../../config/mflux.cfg"
+[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$SCRIPTDIR/../../mflux.cfg"
+[[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && MFLUX_CFG="$SCRIPTDIR/mflux.cfg"
 [[ -z $MFLUX_CFG || ! -f $MFLUX_CFG ]] && echo "Error: cannot find ${HOME}/.Arcitecta/mflux.cfg." 1>&2 && exit 1
 
 # check aterm.jar
-[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM="$(dirname ${BASH_SOURCE[0]})/../../lib/aterm.jar"
+[[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM="$SCRIPTDIR/../../lib/aterm.jar"
 [[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM="${HOME}/.Arcitecta/aterm.jar"
 [[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=/opt/mediaflux/bin/aterm.jar
 [[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]] && MFLUX_ATERM=./aterm.jar
@@ -56,9 +57,9 @@ if [[ -z $MFLUX_ATERM || ! -f $MFLUX_ATERM ]]; then
     WGET=$(which wget)
     [[ -z "${CURL}" && -z "${WGET}" ]] && echo "Error: cannot download aterm.jar. Found no curl or wget." 1>&2 && exit 1
     if [[ ! -z "${CURL}" ]]; then
-        curl -f --create-dirs -k -o "$(dirname $0)/aterm.jar" "${ATERM_URL}"
+        curl -f --create-dirs -k -o "${MFLUX_ATERM}" "${ATERM_URL}"
     else
-        wget --no-check-certificate -O "$(dirname $0)/aterm.jar" "${ATERM_URL}"
+        wget --no-check-certificate -O "${MFLUX_ATERM}" "${ATERM_URL}"
     fi
     if [[ $? -ne 0 ]]; then
         echo "Error: failed to download aterm.jar"
diff --git a/src/main/scripts/unix/file-list b/src/main/scripts/unix/file-list
index eba1f1f..1f9f168 100755
--- a/src/main/scripts/unix/file-list
+++ b/src/main/scripts/unix/file-list
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 # ${ROOT}/bin/
-BIN=$(dirname ${BASH_SOURCE[0]})
+BIN="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 # current directory
 CWD=$(pwd)
diff --git a/src/main/scripts/unix/instrument-upload-list b/src/main/scripts/unix/instrument-upload-list
index 0144440..34dad7f 100644
--- a/src/main/scripts/unix/instrument-upload-list
+++ b/src/main/scripts/unix/instrument-upload-list
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 # ${ROOT}/bin/
-BIN=$(dirname ${BASH_SOURCE[0]})
+BIN="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 # current directory
 CWD=$(pwd)
diff --git a/src/main/scripts/unix/instrument-upload-missing-find b/src/main/scripts/unix/instrument-upload-missing-find
index a6bb3a4..35162f3 100644
--- a/src/main/scripts/unix/instrument-upload-missing-find
+++ b/src/main/scripts/unix/instrument-upload-missing-find
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 # ${ROOT}/bin/
-BIN=$(dirname ${BASH_SOURCE[0]})
+BIN="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 # current directory
 CWD=$(pwd)
diff --git a/src/main/scripts/unix/scp-get b/src/main/scripts/unix/scp-get
index 8e984d4..f80ae9c 100755
--- a/src/main/scripts/unix/scp-get
+++ b/src/main/scripts/unix/scp-get
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 # ${ROOT}/bin/
-BIN=$(dirname ${BASH_SOURCE[0]})
+BIN="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 # current directory
 CWD=$(pwd)
diff --git a/src/main/scripts/unix/scp-put b/src/main/scripts/unix/scp-put
index b8ba6b5..5a4d513 100755
--- a/src/main/scripts/unix/scp-put
+++ b/src/main/scripts/unix/scp-put
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 # ${ROOT}/bin/
-BIN=$(dirname ${BASH_SOURCE[0]})
+BIN="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 # current directory
 CWD=$(pwd)
diff --git a/src/main/scripts/unix/sftp-get b/src/main/scripts/unix/sftp-get
index 62c0cbf..acf4d4e 100755
--- a/src/main/scripts/unix/sftp-get
+++ b/src/main/scripts/unix/sftp-get
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 # ${ROOT}/bin/
-BIN=$(dirname ${BASH_SOURCE[0]})
+BIN="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 # current directory
 CWD=$(pwd)
diff --git a/src/main/scripts/unix/sftp-put b/src/main/scripts/unix/sftp-put
index 494c51a..636d507 100755
--- a/src/main/scripts/unix/sftp-put
+++ b/src/main/scripts/unix/sftp-put
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 # ${ROOT}/bin/
-BIN=$(dirname ${BASH_SOURCE[0]})
+BIN="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 # current directory
 CWD=$(pwd)
diff --git a/src/main/scripts/unix/unimelb-mf-archive b/src/main/scripts/unix/unimelb-mf-archive
index 8a0f8b5..9bc3303 100755
--- a/src/main/scripts/unix/unimelb-mf-archive
+++ b/src/main/scripts/unix/unimelb-mf-archive
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 # ${ROOT}/bin/
-BIN=$(dirname ${BASH_SOURCE[0]})
+BIN="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 # current directory
 CWD=$(pwd)
@@ -28,4 +28,4 @@ else
 fi
 
 # execute the command
-$JAVA -Xmx200m -cp "${JAR}" unimelb.mf.client.archive.cli.MFArchiveCLI ${1+"$@"}
\ No newline at end of file
+$JAVA -Xmx200m -cp "${JAR}" unimelb.mf.client.archive.cli.MFArchiveCLI ${1+"$@"}
diff --git a/src/main/scripts/unix/unimelb-mf-check b/src/main/scripts/unix/unimelb-mf-check
index 695e107..f61326a 100755
--- a/src/main/scripts/unix/unimelb-mf-check
+++ b/src/main/scripts/unix/unimelb-mf-check
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 # ${ROOT}/bin/
-BIN=$(dirname ${BASH_SOURCE[0]})
+BIN="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 # current directory
 CWD=$(pwd)
diff --git a/src/main/scripts/unix/unimelb-mf-download b/src/main/scripts/unix/unimelb-mf-download
index 179b65a..91b13b5 100755
--- a/src/main/scripts/unix/unimelb-mf-download
+++ b/src/main/scripts/unix/unimelb-mf-download
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 # ${ROOT}/bin/
-BIN=$(dirname ${BASH_SOURCE[0]})
+BIN="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 # current directory
 CWD=$(pwd)
diff --git a/src/main/scripts/unix/unimelb-mf-import-archive b/src/main/scripts/unix/unimelb-mf-import-archive
index 1386f9f..7149433 100644
--- a/src/main/scripts/unix/unimelb-mf-import-archive
+++ b/src/main/scripts/unix/unimelb-mf-import-archive
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 # ${ROOT}/bin/
-BIN=$(dirname ${BASH_SOURCE[0]})
+BIN="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 # current directory
 CWD=$(pwd)
diff --git a/src/main/scripts/unix/unimelb-mf-instrument-upload b/src/main/scripts/unix/unimelb-mf-instrument-upload
index 5451ae0..c35fa30 100755
--- a/src/main/scripts/unix/unimelb-mf-instrument-upload
+++ b/src/main/scripts/unix/unimelb-mf-instrument-upload
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 # ${ROOT}/bin/
-BIN=$(dirname ${BASH_SOURCE[0]})
+BIN="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 # current directory
 CWD=$(pwd)
diff --git a/src/main/scripts/unix/unimelb-mf-perf b/src/main/scripts/unix/unimelb-mf-perf
index 599713c..7d90ef6 100755
--- a/src/main/scripts/unix/unimelb-mf-perf
+++ b/src/main/scripts/unix/unimelb-mf-perf
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 # ${ROOT}/bin/
-BIN=$(dirname ${BASH_SOURCE[0]})
+BIN="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 # current directory
 CWD=$(pwd)
@@ -28,4 +28,4 @@ else
 fi
 
 # execute the command
-$JAVA -Xmx200m -cp "${JAR}" unimelb.mf.client.perf.cli.MFPerfCLI ${1+"$@"}
\ No newline at end of file
+$JAVA -Xmx200m -cp "${JAR}" unimelb.mf.client.perf.cli.MFPerfCLI ${1+"$@"}
diff --git a/src/main/scripts/unix/unimelb-mf-upload b/src/main/scripts/unix/unimelb-mf-upload
index 9aef39e..1507055 100755
--- a/src/main/scripts/unix/unimelb-mf-upload
+++ b/src/main/scripts/unix/unimelb-mf-upload
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 # ${ROOT}/bin/
-BIN=$(dirname ${BASH_SOURCE[0]})
+BIN="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 # current directory
 CWD=$(pwd)
-- 
GitLab