Exported universal variable updated in another fish instance is not reflected to exported variables until any operation is performed on exported variables.
$ set --show UV; env|grep UV $UV: not set in local scope $UV: not set in global scope $UV: not set in universal scope $ fish -c 'set -Ux UV 1'; set --show UV; env|grep UV $UV: not set in local scope $UV: not set in global scope $UV: set in universal scope, exported, with 1 elements $UV[1]: length=1 value=|1| UV=1 $ fish -c 'set -Ux UV 2'; set --show UV; env|grep UV $UV: not set in local scope $UV: not set in global scope $UV: set in universal scope, exported, with 1 elements $UV[1]: length=1 value=|2| UV=1 $ fish -c 'set -Ux UV 3'; set --show UV; env|grep UV $UV: not set in local scope $UV: not set in global scope $UV: set in universal scope, exported, with 1 elements $UV[1]: length=1 value=|3| UV=1 $ set -lx unrelated; set --show UV; env|grep UV $UV: not set in local scope $UV: not set in global scope $UV: set in universal scope, exported, with 1 elements $UV[1]: length=1 value=|3| UV=3 $ fish --version fish, version 3.1.0 $ echo $version 3.1.0