Обычные старые временные файлы:
$ pwd > /tmp/loc
$ cd "$(</tmp/loc)"
$ cd "`</tmp/loc`"
$(< file)
похож на $(cat file)
; Вы можете пропустить двойные кавычки, если в содержимом нет пробелов.
Если вы заключите это в функцию или что-то еще, замените /tmp/file
на ~/tmp/file
или даже $XDG_RUNTIME_DIR/file
для некоторой безопасности:
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)"
Вы можете получить более изящные и хранить переменные в ядре ключей через keyctl
(только для Linux):
put() { keyctl add user "$1" "${*:2}" @u; }
get() { keyctl pipe "$(keyctl search @u user "$1")"; }
forget() { keyctl unlink "$(keyctl search @u user "$1")"; }
Да, переменные bash живут внутри самого процесса bash; если вы export
переменную, она копируется в "среду" этого процесса и копируется (наследуется) по материалам, которые вы запускаете из этого процесса bash.