初始化新的git存储库(在Linux / Ubuntu上)时,我们使用:
# What this doing:
GIT_DIR=myproject.git git init
#The above line will output: Initialized empty Git Repo...
cd myproject.git
git --bare update-server-info
cp hooks/post-update.sample hooks/post-update
第一行“ GIT_DIR = ... ”让我困惑,似乎bash会得到一个env变量而git使用第一个来初始化新项目,但是怎么样?谁能解释这个小魔法?
答案 0 :(得分:4)
在与Bourne兼容的shell中,可能会在没有export
关键字的情况下分配变量
如果在程序前面使用,变量将被导出到环境中
因此作为程序的真实环境变量出现:
$ VARIABLE=value ./myprogram [arguments]
在具有env程序的系统上,您可以这样做:
$ env VARIABLE=value ./myprogram [arguments]
答案 1 :(得分:2)
这是Bash和其他Bourne兼容shell的一个功能:
VAR=val cmd
运行cmd
,VAR
设置为val
,否则设置为自身的环境。
尝试运行以下命令:
printenv
export FOO=bar
printenv | grep '^FOO='
FOO=baz printenv | grep '^FOO='