如何为整个命令应用环境变量
How to apply an environment variable for the whole command
在我的 Bash 终端中,我定期执行一系列命令。例如:
cmd1 && cmd2 && cmd3
现在,我想定义一个环境变量,它应用于所有三个命令,并且仅作用于这些命令。我试过了:
MY_VAR=abc cmd1 && cmd2 && cmd3
不过现在好像只有cmd1
看到MY_VAR
.
有没有办法将环境变量应用于所有三个命令?我知道我可以提前 export
,但我更喜欢以临时方式在本地声明环境变量,因此它永远不会影响后续命令。
重要的是,我正在使用 urxvt
作为终端仿真器。
重复:MY_VAR=abc cmd1 && MY_VAR=abc cmd2 && MY_VAR=abc cmd3
或者使用子shell:
# wrapper subshell for the commands
cmds ()
{
cmd1 && cmd2 && cmd3
}
# invoke it
MY_VAR=abc cmds
如果您需要一次性输入全部内容,请执行:
cmds() { cmd1 && cmd2 && cmd3; }; MY_VAR=abc cmds
你可以试试这个:
export MY_VAR="abc"
cmd1 && cmd2 && cmd3
unset MY_VAR # only nessesary if you want to remove the variable again
方法是:
MY_VAR=abc; cmd1 && cmd2 && cmd3
不同之处在于赋值后的冒号。
没有冒号 ;
、MY_VAR=abc cmd1 && ...
这会导致赋值成为条件表达式 cmd1 element
的一部分。另一边的任何东西
逻辑与:&&
看不到其他条件元素的本地环境。
我创建了一个简单的脚本来回显我的变量以尝试模拟一个命令。
还使用 export
命令声明了 1 "global environment variable"。
#!/bin/bash
echo $ABC
输入
$ export ABC=globalEnvironmentVariable
$ (ABC=localGroupVariable; ./test.sh && ./test.sh) && ABC=commandVariable ./test.sh && ./test.sh
输出
localGroupVariable
localGroupVariable
commandVariable
globalEnvironmentVariable
在我的 Bash 终端中,我定期执行一系列命令。例如:
cmd1 && cmd2 && cmd3
现在,我想定义一个环境变量,它应用于所有三个命令,并且仅作用于这些命令。我试过了:
MY_VAR=abc cmd1 && cmd2 && cmd3
不过现在好像只有cmd1
看到MY_VAR
.
有没有办法将环境变量应用于所有三个命令?我知道我可以提前 export
,但我更喜欢以临时方式在本地声明环境变量,因此它永远不会影响后续命令。
重要的是,我正在使用 urxvt
作为终端仿真器。
重复:MY_VAR=abc cmd1 && MY_VAR=abc cmd2 && MY_VAR=abc cmd3
或者使用子shell:
# wrapper subshell for the commands
cmds ()
{
cmd1 && cmd2 && cmd3
}
# invoke it
MY_VAR=abc cmds
如果您需要一次性输入全部内容,请执行:
cmds() { cmd1 && cmd2 && cmd3; }; MY_VAR=abc cmds
你可以试试这个:
export MY_VAR="abc"
cmd1 && cmd2 && cmd3
unset MY_VAR # only nessesary if you want to remove the variable again
方法是:
MY_VAR=abc; cmd1 && cmd2 && cmd3
不同之处在于赋值后的冒号。
没有冒号 ;
、MY_VAR=abc cmd1 && ...
这会导致赋值成为条件表达式 cmd1 element
的一部分。另一边的任何东西
逻辑与:&&
看不到其他条件元素的本地环境。
我创建了一个简单的脚本来回显我的变量以尝试模拟一个命令。
还使用 export
命令声明了 1 "global environment variable"。
#!/bin/bash
echo $ABC
输入
$ export ABC=globalEnvironmentVariable
$ (ABC=localGroupVariable; ./test.sh && ./test.sh) && ABC=commandVariable ./test.sh && ./test.sh
输出
localGroupVariable
localGroupVariable
commandVariable
globalEnvironmentVariable