“GIT_DIR = myproject.git git init”:这个命令行在bash上做了什么?

时间:2012-03-07 16:37:02

标签: git bash shell environment-variables

初始化新的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使用第一个来初始化新项目,但是怎么样?谁能解释这个小魔法?

2 个答案:

答案 0 :(得分:4)

在与Bourne兼容的shell中,可能会在没有export关键字的情况下分配变量 如果在程序前面使用,变量将被导出到环境中 因此作为程序的真实环境变量出现:

$ VARIABLE=value ./myprogram [arguments]

在具有env程序的系统上,您可以这样做:

$ env VARIABLE=value ./myprogram [arguments]

答案 1 :(得分:2)

这是Bash和其他Bourne兼容shell的一个功能:

VAR=val cmd

运行cmdVAR设置为val,否则设置为自身的环境。

尝试运行以下命令:

printenv
export FOO=bar
printenv | grep '^FOO='
FOO=baz printenv | grep '^FOO='