diff --git a/src/evalfunc.c b/src/evalfunc.c
index da8f845..690b921 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -9223,9 +9223,9 @@
     name = tv_get_string_buf(&argvars[0], namebuf);
     if (argvars[1].v_type == VAR_SPECIAL
 				      && argvars[1].vval.v_number == VVAL_NULL)
-	vim_unsetenv(name);
+	vim_unsetenv_ext(name);
     else
-	vim_setenv(name, tv_get_string_buf(&argvars[1], valbuf));
+	vim_setenv_ext(name, tv_get_string_buf(&argvars[1], valbuf));
 }
 
 /*
diff --git a/src/evalvars.c b/src/evalvars.c
index 4690d1a..8f8df0c 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -1795,7 +1795,7 @@
 
 	// Environment variable, normal name or expanded name.
 	if (*lp->ll_name == '$')
-	    vim_unsetenv(lp->ll_name + 1);
+	    vim_unsetenv_ext(lp->ll_name + 1);
 	else if (do_unlet(lp->ll_name, forceit) == FAIL)
 	    ret = FAIL;
 	*name_end = cc;
diff --git a/src/misc1.c b/src/misc1.c
index af83c10..9aa8ecf 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -1910,6 +1910,20 @@
 #endif
 }
 
+/*
+ * Removes environment variable "name" and take care of side effects.
+ */
+    void
+vim_unsetenv_ext(char_u *var)
+{
+    vim_unsetenv(var);
+
+    // "homedir" is not cleared, keep using the old value until $HOME is set.
+    if (STRICMP(var, "VIM") == 0)
+	didset_vim = FALSE;
+    else if (STRICMP(var, "VIMRUNTIME") == 0)
+	didset_vimruntime = FALSE;
+}
 
 /*
  * Set environment variable "name" and take care of side effects.
@@ -1922,8 +1936,7 @@
 	init_homedir();
     else if (didset_vim && STRICMP(name, "VIM") == 0)
 	didset_vim = FALSE;
-    else if (didset_vimruntime
-	    && STRICMP(name, "VIMRUNTIME") == 0)
+    else if (didset_vimruntime && STRICMP(name, "VIMRUNTIME") == 0)
 	didset_vimruntime = FALSE;
 }
 #endif
diff --git a/src/optionstr.c b/src/optionstr.c
index 698a3f3..26dd551 100644
--- a/src/optionstr.c
+++ b/src/optionstr.c
@@ -644,7 +644,7 @@
 
 /*
  * Handle string options that need some action to perform when changed.
- * Returns NULL for success, or an error message for an error.
+ * Returns NULL for success, or an unstranslated error message for an error.
  */
     char *
 did_set_string_option(
@@ -787,15 +787,9 @@
     {
 	// May compute new values for $VIM and $VIMRUNTIME
 	if (didset_vim)
-	{
-	    vim_setenv((char_u *)"VIM", (char_u *)"");
-	    didset_vim = FALSE;
-	}
+	    vim_unsetenv_ext((char_u *)"VIM");
 	if (didset_vimruntime)
-	{
-	    vim_setenv((char_u *)"VIMRUNTIME", (char_u *)"");
-	    didset_vimruntime = FALSE;
-	}
+	    vim_unsetenv_ext((char_u *)"VIMRUNTIME");
     }
 
 #ifdef FEAT_SYN_HL
diff --git a/src/proto/misc1.pro b/src/proto/misc1.pro
index cc7e07a..167805b 100644
--- a/src/proto/misc1.pro
+++ b/src/proto/misc1.pro
@@ -32,6 +32,7 @@
 void expand_env_esc(char_u *srcp, char_u *dst, int dstlen, int esc, int one, char_u *startstr);
 char_u *vim_getenv(char_u *name, int *mustfree);
 void vim_unsetenv(char_u *var);
+void vim_unsetenv_ext(char_u *var);
 void vim_setenv_ext(char_u *name, char_u *val);
 void vim_setenv(char_u *name, char_u *val);
 char_u *get_env_name(expand_T *xp, int idx);
diff --git a/src/testdir/test_environ.vim b/src/testdir/test_environ.vim
index dd34983..d834481 100644
--- a/src/testdir/test_environ.vim
+++ b/src/testdir/test_environ.vim
@@ -28,6 +28,26 @@
   call assert_equal(v:null, getenv('TEST ENV'))
 endfunc
 
+func Test_special_env()
+  " The value for $HOME is cached internally by Vim, ensure the value is up to
+  " date.
+  let orig_ENV = $HOME
+
+  let $HOME = 'foo'
+  call assert_equal('foo', expand('~'))
+  " old $HOME value is kept until a new one is set
+  unlet $HOME
+  call assert_equal('foo', expand('~'))
+
+  call setenv('HOME', 'bar')
+  call assert_equal('bar', expand('~'))
+  " old $HOME value is kept until a new one is set
+  call setenv('HOME', v:null)
+  call assert_equal('bar', expand('~'))
+
+  let $HOME = orig_ENV
+endfunc
+
 func Test_external_env()
   call setenv('FOO', 'HelloWorld')
   if has('win32')
diff --git a/src/version.c b/src/version.c
index 97683b4..e833b78 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4754,
+/**/
     4753,
 /**/
     4752,
diff --git a/src/vim9execute.c b/src/vim9execute.c
index da2822c..afa0dcf 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -2656,6 +2656,7 @@
 	    case ISN_SOURCE:
 		{
 		    int notused;
+
 		    SOURCING_LNUM = iptr->isn_lnum;
 		    if (may_load_script((int)iptr->isn_arg.number, &notused)
 								       == FAIL)
@@ -3490,7 +3491,7 @@
 		    goto on_error;
 		break;
 	    case ISN_UNLETENV:
-		vim_unsetenv(iptr->isn_arg.unlet.ul_name);
+		vim_unsetenv_ext(iptr->isn_arg.unlet.ul_name);
 		break;
 
 	    case ISN_LOCKUNLOCK:
