diff --git a/.gitignore b/.gitignore
index 72e631fa7af51bc8afdb3e98a60c843da8252e68..de467ec2cf911f11091802537adf49f3235a5448 100644
--- a/.gitignore
+++ b/.gitignore
@@ -109,3 +109,5 @@ Vagrantfile
 /tests/autotest*
 /tests/data/lorem-copy.txt
 /tests/data/testimage-copy.png
+/config/config-autotest-backup.php
+/config/autoconfig.php
diff --git a/autotest-external.sh b/autotest-external.sh
index 761477a4c97bb0c25291be1213f46d16330a0a12..74acddfd7a0741f0c0f6d6980bda6d04d602c42e 100755
--- a/autotest-external.sh
+++ b/autotest-external.sh
@@ -60,20 +60,25 @@ if [ "$1" ]; then
 	fi
 fi
 
-# Back up existing (dev) config if one exists
-if [ -f config/config.php ]; then
+# Back up existing (dev) config if one exists and backup not already there
+if [ -f config/config.php ] && [ ! -f config/config-autotest-backup.php ]; then
 	mv config/config.php config/config-autotest-backup.php
 fi
 
-function restore_config {
+function cleanup_config {
+	cd "$BASEDIR"
 	# Restore existing config
 	if [ -f config/config-autotest-backup.php ]; then
 		mv config/config-autotest-backup.php config/config.php
 	fi
+	# Remove autotest config
+	if [ -f config/autoconfig.php ]; then
+		rm config/autoconfig.php
+	fi
 }
 
-# restore config on exit, even when killed
-trap restore_config SIGINT SIGTERM
+# restore config on exit
+trap cleanup_config EXIT
 
 # use tmpfs for datadir - should speedup unit test execution
 if [ -d /dev/shm ]; then
@@ -278,9 +283,6 @@ else
 	execute_tests "$1" "$2"
 fi
 
-cd "$BASEDIR"
-
-restore_config
 #
 # NOTES on mysql:
 #  - CREATE DATABASE oc_autotest;
diff --git a/autotest-hhvm.sh b/autotest-hhvm.sh
index 4d8efa5a4b833f599a417ee949c29b085bb11057..bf96a5133a60c58b9f7d9ed38a70ee79e75f99b2 100755
--- a/autotest-hhvm.sh
+++ b/autotest-hhvm.sh
@@ -66,20 +66,25 @@ if [ "$1" ]; then
 	fi
 fi
 
-# Back up existing (dev) config if one exists
-if [ -f config/config.php ]; then
+# Back up existing (dev) config if one exists and backup not already there
+if [ -f config/config.php ] && [ ! -f config/config-autotest-backup.php ]; then
 	mv config/config.php config/config-autotest-backup.php
 fi
 
-function restore_config {
+function cleanup_config {
+	cd "$BASEDIR"
 	# Restore existing config
 	if [ -f config/config-autotest-backup.php ]; then
 		mv config/config-autotest-backup.php config/config.php
 	fi
+	# Remove autotest config
+	if [ -f config/autoconfig.php ]; then
+		rm config/autoconfig.php
+	fi
 }
 
-# restore config on exit, even when killed
-trap restore_config SIGINT SIGTERM
+# restore config on exit
+trap cleanup_config EXIT
 
 # use tmpfs for datadir - should speedup unit test execution
 if [ -d /dev/shm ]; then
@@ -236,9 +241,6 @@ else
 	execute_tests "$1" "$2" "$3"
 fi
 
-cd "$BASEDIR"
-
-restore_config
 #
 # NOTES on mysql:
 #  - CREATE DATABASE oc_autotest;
diff --git a/autotest.sh b/autotest.sh
index 7bb4c80cb9b002bbd10f84d2a64517e6ed4b319b..647012ea6185e156eabc24ad058a65371e709f14 100755
--- a/autotest.sh
+++ b/autotest.sh
@@ -60,20 +60,25 @@ if [ "$1" ]; then
 	fi
 fi
 
-# Back up existing (dev) config if one exists
-if [ -f config/config.php ]; then
+# Back up existing (dev) config if one exists and backup not already there
+if [ -f config/config.php ] && [ ! -f config/config-autotest-backup.php ]; then
 	mv config/config.php config/config-autotest-backup.php
 fi
 
-function restore_config {
+function cleanup_config {
+	cd "$BASEDIR"
 	# Restore existing config
 	if [ -f config/config-autotest-backup.php ]; then
 		mv config/config-autotest-backup.php config/config.php
 	fi
+	# Remove autotest config
+	if [ -f config/autoconfig.php ]; then
+		rm config/autoconfig.php
+	fi
 }
 
-# restore config on exit, even when killed
-trap restore_config SIGINT SIGTERM
+# restore config on exit
+trap cleanup_config EXIT
 
 # use tmpfs for datadir - should speedup unit test execution
 if [ -d /dev/shm ]; then
@@ -234,9 +239,6 @@ else
 	execute_tests "$1" "$FILENAME" "$3"
 fi
 
-cd "$BASEDIR"
-
-restore_config
 #
 # NOTES on mysql:
 #  - CREATE DATABASE oc_autotest;