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.