diff --git a/dist/tools/ethos/start_network.sh b/dist/tools/ethos/start_network.sh
index c85e90c7118acd9f8880c12fa53ab7f272654f79..87e44f489fa874c2f3c48e2ec2cc2f97cdbc639b 100755
--- a/dist/tools/ethos/start_network.sh
+++ b/dist/tools/ethos/start_network.sh
@@ -1,5 +1,7 @@
 #!/bin/sh
 
+ETHOS_DIR="$(dirname $(readlink -f $0))"
+
 create_tap() {
     ip tuntap add ${TAP} mode tap user ${USER}
     sysctl -w net.ipv6.conf.${TAP}.forwarding=1
@@ -18,7 +20,7 @@ cleanup() {
     echo "Cleaning up..."
     remove_tap
     ip a d fd00:dead:beef::1/128 dev lo
-    kill $UHCPD_PID
+    kill ${UHCPD_PID}
     trap "" INT QUIT TERM EXIT
 }
 
@@ -30,13 +32,14 @@ start_uhcpd() {
 PORT=$1
 TAP=$2
 PREFIX=$3
-UHCPD=../uhcpd/bin/uhcpd
+UHCPD="$(readlink -f "${ETHOS_DIR}/../uhcpd/bin")/uhcpd"
 
-[ -z "$PORT" -o -z "$TAP" -o -z "$PREFIX" ] && {
+[ -z "${PORT}" -o -z "${TAP}" -o -z "${PREFIX}" ] && {
     echo "usage: $0 <serial-port> <tap-device> <prefix>"
     exit 1
 }
 
 trap "cleanup" INT QUIT TERM EXIT
 
-create_tap && start_uhcpd && ./ethos $TAP $PORT
+
+create_tap && start_uhcpd && "${ETHOS_DIR}/ethos" ${TAP} ${PORT}