Arquivos temporários antigos simples:
$ pwd > /tmp/loc
$ cd "$(</tmp/loc)"
$ cd "'</tmp/loc'"
$(< file) é semelhante a $(cat file) ; você pode pular as aspas duplas se o conteúdo não tiver espaços.
Se você incluir isso em uma função ou algo do tipo, altere a /tmp/file para ~/tmp/file ou até mesmo $XDG_RUNTIME_DIR/file para alguma segurança:
put() { echo "${*:2}" > "$XDG_RUNTIME_DIR/var-$1"; }
get() { cat "$XDG_RUNTIME_DIR/var-$1"; }
forget() { rm -f "$XDG_RUNTIME_DIR/var-$1"; }
$ put somedir "$(pwd)"
$ cd "$(get somedir)"
Você pode obter mais e armazenar variáveis nos keyrings do kernel via keyctl (somente no Linux):
put() { keyctl add user "$1" "${*:2}" @u; }
get() { keyctl pipe "$(keyctl search @u user "$1")"; }
forget() { keyctl unlink "$(keyctl search @u user "$1")"; }
Sim, as variáveis bash vivem no próprio processo bash; se você for uma variável export , ela será copiada para o processo "ambiente" e copiada (herdada) pelas coisas que você executar a partir desse processo bash.