自动将所有环境变量从一个 shell 传输到另一个 shell
我想自动将一个 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' ' ') # 用于测试它是否有效 导出 $(ksh -c env | tr '\n' ' ')
这也不起作用。
任何评论都将受到高度赞赏。
I want to transfer all environment variables of the one shell (in my case: kornshell) to another shell (in my case: the z-shell) automatically.
If possible, the transfer should be in the startup file of the zshell to aviod the use of additional scripts as I want to transfer it to other servers for the same purpose.
What I tried so far:
put
$ export $(ksh -c env | tr '\n' ' ')
in the .zshrc (Startupfile of the Zshell).This was not working because the command is executed as a child of the current shell (zsh) which consequently has the same environment variables as the zsh and NOT the environment of the kornshell.
in an extra script
#!/usr/bin/ksh echo $(ksh -c env | tr '\n' ' ') # for testing if it works export $(ksh -c env | tr '\n' ' ')
This doent's work either.
Any comments are highly appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
对我不起作用,因为“env”返回如下文本:
因此上面的命令将展开 $(ksh -c env | tr '\n' ' ') 并运行:
但这会生成错误:
请注意,可能还有其他坏字符在“env”的输出中,“=”右侧的符号会产生错误。
但是有一种更好的方法来导出环境:
在 Bash 中输出
看来 Bash“declare -x”与“export”相同。
但在 ksh “export -p” 打印中
现在我只需要运行
即可导出所有变量
但我还需要在导出新变量之前删除所有现有变量。
我在以下位置找到了解决方案:
http:// www.linuxquestions.org/questions/linux-newbie-8/how-to-unset-environment-variable-in-bash-383066/
所以,我的最终代码是:
does not work for me because "env" returns text like:
So the above command will expand $(ksh -c env | tr '\n' ' ') and run:
But this generates error:
Note that there may be other bad characters on the right side of "=" sign in the output of "env", which will produce errors.
But there is a better way to export environment:
this outputs in Bash
It appears that Bash "declare -x" is the same as "export".
But in ksh "export -p" prints
Now I just need to run
to export all variables
But I also need to delete all existing variables before exporting new.
I found solution at:
http://www.linuxquestions.org/questions/linux-newbie-8/how-to-unset-environment-variable-in-bash-383066/
So, my final code is:
在空环境中运行
ksh
:Run your
ksh
in an empty environment:怎么样使用 . /path/to/your/shell/script.sh 运行脚本。
您可以通过三种不同的方式运行 shell 脚本,
1) /bin/sh /path/to/your/shell/script.sh
2)
/path/to/your/shell/script.sh
3) <代码>。 /path/to/your/shell/script.sh
你可以检查一下。
How about using . /path/to/your/shell/script.sh to run your script.
You can run a shell script by three different means,
1)
/bin/sh /path/to/your/shell/script.sh
2)
/path/to/your/shell/script.sh
3)
. /path/to/your/shell/script.sh
You can check it out.