diff --git a/activate.sh b/activate.sh
index dd6e78e75a8bfb316953480bc92cc9771729c8bc..1ebb7bc0ad75fe7d6c838a84b120b9d1d83eda30 100644
--- a/activate.sh
+++ b/activate.sh
@@ -1,6 +1,7 @@
 #!/bin/bash
 
-SOURCE_PATH="${BASH_SOURCE[0]}"
+# See https://stackoverflow.com/a/28336473
+SOURCE_PATH="${BASH_SOURCE[0]:-${(%):-%x}}"
 
 RELATIVE_PATH="$(dirname "$SOURCE_PATH")"
 ABSOLUTE_PATH="$(realpath "${RELATIVE_PATH}")"
diff --git a/config.sh b/config.sh
index 8706f744e9b3a4d2740c1d7e98cc58c7279ee896..b7de5f78f5b6b124d549cca916c9ea7d3ec56c6c 100644
--- a/config.sh
+++ b/config.sh
@@ -1,4 +1,4 @@
-SOURCE_PATH="${BASH_SOURCE[0]}"
+SOURCE_PATH="${BASH_SOURCE[0]:-${(%):-%x}}"
 
 ## Check if this script is sourced
 [[ "$0" != "${SOURCE_PATH}" ]] && echo "Setting vars" || ( echo "Vars script must be sourced." && exit 1) ;
diff --git a/create_kernel.sh b/create_kernel.sh
index 93dd6068d54f9c7f5a5b3b88f9b2b39499e63974..e09007b1b2ed78fd9d10c69eb493c13f2670370f 100755
--- a/create_kernel.sh
+++ b/create_kernel.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-SOURCE_PATH="${BASH_SOURCE[0]}"
+SOURCE_PATH="${BASH_SOURCE[0]:-${(%):-%x}}"
 
 RELATIVE_PATH="$(dirname "$SOURCE_PATH")"
 ABSOLUTE_PATH="$(realpath "${RELATIVE_PATH}")"
diff --git a/setup.sh b/setup.sh
index 491a50c9ef579404ea05cfcfab25e7b134be747d..326a7c457733f97ea9809d3ed3c89a72a1776c25 100755
--- a/setup.sh
+++ b/setup.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-SOURCE_PATH="${BASH_SOURCE[0]}"
+SOURCE_PATH="${BASH_SOURCE[0]:-${(%):-%x}}"
 
 RELATIVE_PATH="$(dirname "$SOURCE_PATH")"
 ABSOLUTE_PATH="$(realpath "${RELATIVE_PATH}")"