diff --git a/bin/dunecontrol b/bin/dunecontrol
index 19fd36dd6747eb0aa0113de0e6b9f8e06e9c4c59..c0e7e52b370ef2110e62d39296f9af2a455bb75e 100755
--- a/bin/dunecontrol
+++ b/bin/dunecontrol
@@ -220,6 +220,7 @@ while test $# -gt 0; do
     # stolen from configure...
     # when no option is set, this returns an error code
     arg=`expr "x$option" : 'x[^=]*=\(.*\)'`
+    arg=$(eval "echo $arg")
     set -e
 
     # switch
@@ -231,7 +232,7 @@ while test $# -gt 0; do
         echo
         exit 1;
       fi
-      OPTS_FILE=$(cd $(dirname $arg); pwd)/$(basename $arg)
+      OPTS_FILE=$(cd $(dirname $(readlink -f $arg)); pwd)/$(basename $arg)
       if ! test -r "$OPTS_FILE"; then
         usage
         echo "ERROR: could not read opts file \"$OPTS_FILE\""