类似于使用.env文件运行shell脚本,但我希望有一个类似xargs
的"附加用法":
xenv path/to/existing/envfile <WHATEVER COMMAND TO RUN>
例如,在磁盘上有一个envfile
,如:
FOOBAR="Hello Word"
我想要:
% FOOBAR="old value"
% echo $FOOBAR
old value
% xenv path/to/envfile echo $FOOBAR
Hello World
% echo $FOOBAR
old value
我试过一些变体,比如:
xenv() {
(set -a && source "$1" && "$@")
}
xenv() {
(set -a && source $(realpath "$1") && "$@")
}
基于您的xenv()
:
$ xenv() { (set -a && source "$1" && shift && "$@"); }
$ cat envfile
FOO='hello world'
$ FOO='old value'
$ echo $FOO
old value
$ xenv ./envfile bash -c 'echo $FOO'
hello world
$ echo $FOO
old value
$
注意,像xenv ./envfile echo "$FOO"
这样的用法不起作用,因为$FOO
会在当前shell的env中展开。