meg*_*gas 4 bash environment-variables tmux
我正在使用 tmux,我想将一些信息从一个窗格传递到另一个窗格。
例如,在第一个窗格中,我通过 pwd 命令获取了文件夹,而不是复制粘贴到另一个窗格,我想将此结果分配给某个变量并在另一个变量中使用它。我想我不能使用 bash 变量,因为它们位于 bash 会话或配置文件中。
有办法解决这个问题吗?
普通旧临时文件:
$ pwd > /tmp/loc
$ cd "$(</tmp/loc)"
$ cd "`</tmp/loc`"
Run Code Online (Sandbox Code Playgroud)
$(< 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)"
Run Code Online (Sandbox Code Playgroud)
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")"; }
Run Code Online (Sandbox Code Playgroud)
是的,bash 变量存在于 bash 进程本身中;如果你是export
一个变量,它会被复制到该进程的“环境”,并被你从该 bash 进程运行的东西复制(继承)。