【问题标题】:How to use all the Unix environment variables?如何使用所有的 Unix 环境变量?
【发布时间】:2014-01-14 06:49:32
【问题描述】:

使用 Java (JSch API) 我正在尝试在远程机器上执行 Unix 命令。现在,要成功执行此命令,我需要使用已在远程机器上设置的所有环境变量。

我可以使用export <variable> 命令在运行时设置变量。但是由于此类变量的数量很大,我想知道是否有更好的方法在运行时使用这些变量。

谁能帮忙,或者我应该再解释一下吗?

【问题讨论】:

  • 这些变量是否是您通过 ssh 登录并手动执行命令时通常存在的变量?
  • @harmic 是的,你是对的,这些在我通过控制台运行命令时默认可用。

标签: java unix environment-variables jsch


【解决方案1】:

您可以将变量保存到文件中:

set > /tmp/vars
echo "A=120" >> /tmp/vars

然后在这样的脚本中“导入”带有点的变量:

set -a
. /tmp/vars
mycommand

【讨论】:

  • 我认为这是一个很好的解决方案。我需要使用 printenv 而不是 set
【解决方案2】:

我发现的解决方法是使用

set | mycommand

Set 会手动调用初始化过程,并将环境变量添加到作用域中。

JSch 使用 -c 调用 bash。这会导致 .bashrc 不在 bash 范围内初始化。 Set 会读取 .bashrc 文件和其他配置文件。

【讨论】:

    猜你喜欢
    • 2011-01-28
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    相关资源
    最近更新 更多