【发布时间】:2012-02-06 00:19:44
【问题描述】:
我想将一个 shell(在我的例子中:kornshell)的所有环境变量自动传输到另一个 shell(在我的例子中:z-shell)。
如果可能,传输应该在 zshell 的启动文件中,以避免使用额外的脚本,因为我想将它传输到其他服务器以实现相同的目的。
到目前为止我尝试了什么:
-
将
$ export $(ksh -c env | tr '\n' ' ')放入.zshrc(Zshell 的启动文件)中。这不起作用,因为该命令作为当前 shell (zsh) 的子级执行,因此具有与 zsh 相同的环境变量,而不是 kornshell 的环境。
-
在一个额外的脚本中
#!/usr/bin/ksh echo $(ksh -c env | tr '\n' ' ') # for testing if it works export $(ksh -c env | tr '\n' ' ')这也不行。
任何cmets都非常感谢。
【问题讨论】:
-
缩进和编号列表不能很好地结合在一起。尝试使用
1)等编号。 -
谢谢你,成功了:)
-
@larsmans:是的,他们有。列表中应该包含的任何内容都需要缩进 4 + 任何其他需要空格的内容。逐字记录是 8。
-
你能更详细地描述一下这个用例吗?一方面,传输 all 环境变量可能会搞砸事情(有些是特定于 shell 的),另一方面,您可能感兴趣的那些不是由 shell 组成的,而是从某个地方读取的,所以只要确保其他 shell 将它们捡起来可能是更简单的选择。但需要更多细节才能确定。
-
我正在使用标准 shell 是 korn shell 的服务器。如果某些变量应该更改,管理员只会更改 ksh 中的那些。这就是为什么我想在 zsh 启动时自动读取它们。如果您想使用另一个 shell(不能更改 kshell 配置,因为我不是唯一使用它的人),您需要以某种方式将这些环境变量传输到另一个 shell。 korn shell 的 .profile 文件不包含我需要的所有环境变量(例如 DISPLAY、一些 SSH_CLIENT 定义……),我不知道如何找到它们。认为这更容易?