【发布时间】:2025-12-29 06:40:05
【问题描述】:
我们如何将变量从一个 shell 更新到另一个 shell?
假设,我打开了 2 个 Putty 会话,我想在第一个 SHELL 中设置一个变量,我需要从第二个 SHELL 访问该变量。
有可能吗?
【问题讨论】:
-
不,这是不可能的,但如果你告诉我们你想要做什么,那么我们可能会建议你替代方案。
-
只是想知道可能性....
我们如何将变量从一个 shell 更新到另一个 shell?
假设,我打开了 2 个 Putty 会话,我想在第一个 SHELL 中设置一个变量,我需要从第二个 SHELL 访问该变量。
有可能吗?
【问题讨论】:
您可以将变量保存到脚本中。 然后在第二次会话中获取脚本。
例如:
# session 1
hello=world
echo "hello=$hello" > /tmp/var.sh
# session 2
. /tmp/var.sh
echo $hello
【讨论】:
由于每个进程的环境都受到保护,因此无法共享环境变量。我建议使用共享文件系统上的文件来存储您想要的变量,并在您需要知道新值是什么时读取该文件。
【讨论】:
这通常是不可能的,因为每个 shell(和每个进程)都有自己的环境。见execve(2)。
但是,您可能希望切换到fish shell。它为您提供所谓的universal variables,它可以在fish shell 的多个实例(即正在运行的进程)之间共享。这是通过fishd 用户守护进程实现的(每个fish 进程都与之通信)。
【讨论】: