【问题标题】:How set multiple env variables for a bash command如何为 bash 命令设置多个环境变量
【发布时间】:2014-11-29 03:28:04
【问题描述】:

我应该设置 EC2_HOME 和 JAVA_HOME 变量 在运行命令之前(ec2-describe-regions)

我如何一次性做到这一点?

【问题讨论】:

    标签: linux bash cygwin


    【解决方案1】:

    如果你想在同一个会话中多次使用环境变量,你可以使用:

    export VAR1=value1 VAR2=value2 VARN=valueN
    

    如果你想在不影响当前 bash 会话的情况下执行带有多个变量的命令,你可以使用:

    VAR1=value1 VAR2=value2 VARN=valueN command arg=1
    

    【讨论】:

      【解决方案2】:

      和其他 *nix 系统一样,你可以在你的 HOME 目录下的 .bashrc 文件中添加如下功能。

      function startec2(){
          export EC2_HOME=/path/to/dir
          export JAVA_HOME=/other/path 
          ec2-describe-regions
      }
      

      现在,您可以通过以下命令启动程序:

      startec2
      

      【讨论】:

        【解决方案3】:

        您可以通过将它们放在命令之前的命令行上一次性设置单个命令的变量:

        $ EC2_HOME=/path/to/dir JAVA_HOME=/other/path ec2-describe-regions
        

        或者,您可以将它们导出到环境中,在这种情况下,将为所有未来的命令设置它们:

        $ export EC2_HOME=/path/to/dir
        $ export JAVA_HOME=/other/path
        $ ec2-describe-regions
        

        【讨论】:

        • 请注意,虽然看起来不常见,但您也可以写成export EC2_HOME=/path JAVA_HOME=/path
        • 一次性选项在脚本中非常有用。对于需要以 root 或其他用户身份执行命令的任何人来说,请注意,变量应该在 sudo 或用户之后。例如sudo -u somebody CVSROOT=:ext:somebody@12.18.127.22:/usr/local/ncvs CVS_RSH=ssh cvs co my/dir/ancient-file.py
        • 通过前置可以提供的变量数量是否有限制?
        • 只是最大命令行长度限制,在linux上相当大。
        • @EricDuminil 所有这些分配仅适用于正在运行的命令的环境,而不适用于 shell 的环境。输入中的所有 $X 引用都将由 shell(而不是命令)扩展,因此不可能受到它们的影响。为了让分配影响使用,使用必须在命令中(可以使用eval,尽管引用很棘手:A=Foo eval 'B=$A$A eval '"'"'echo $B'"'"
        猜你喜欢
        • 2012-12-11
        • 2020-08-13
        • 2020-02-14
        • 2021-03-20
        • 2015-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-22
        相关资源
        最近更新 更多