Bash命令行env vars

mik*_*ney 2 linux macos bash shell

如果你这样做(在bash中):

ENV_ONE=1 ENV_TWO=2 command
Run Code Online (Sandbox Code Playgroud)

command将在其调用中接受并使用环境变量.但是,如果你这样做:

ENV_ONE=1 ENV_TWO=2 clear && command
Run Code Online (Sandbox Code Playgroud)

clear将使用命令行上设置的env变量,它们不会传递给命令.如果您想要执行以下操作,这是一个问题:

alias command='clear && command'
Run Code Online (Sandbox Code Playgroud)

我已经google了一下,在命令之前我找不到代表env变种的bash内置.我的问题是:如何将CLI声明的env vars传递给第二个命令?

tha*_*guy 6

使用别名的经验法则是"如果你不得不问,请改用函数".由于command与内置冲突,我会打电话给你的命令foo:

foo() { clear && command foo "$@"; }
ENV_ONE=1 ENV_TWO=2 foo
Run Code Online (Sandbox Code Playgroud)

这按预期工作.