GitBash中的环境变量未设置

时间:2018-03-23 08:22:33

标签: environment-variables mingw git-bash

我正在尝试通过一个小的bash脚本在我的mingw gitbash(windows7-x64)中设置环境变量。但是只有我手动执行它才会设置它。

dev.bash

的内容
schwat@AACarrier MINGW64 ~/Documents/test
$ cat dev.bsh

#!/usr/bin/env sh
export KUBECONFIG="/c/Users/schwat/Documents/test/.kube/dev.kubecfg"
kubectl config set-context dev --cluster=kubernetes --namespace=dev --user=admin
kubectl config use-context dev
echo "Connected to ENV:DEV"

执行dev.bsh并回复$KUBECONFIG

schwat@AACarrier MINGW64 ~/Documents/test
$ ./dev.bsh
Context "dev" modified.
Switched to context "dev".
Connected to ENV:DEV


schwat@AACarrier MINGW64 ~/Documents/test
$ echo $KUBECONFIG

手动导出KUBECONFIG并回显$KUBECONFIG

schwat@AACarrier MINGW64 ~/Documents/test
$ export KUBECONFIG="/c/Users/schwat/Documents/test/.kube/dev.kubecfg"


schwat@AACarrier MINGW64 ~/Documents/test
$ echo $KUBECONFIG
/c/Users/schwat/Documents/test/.kube/dev.kubecfg

知道这里有什么问题吗? (不是重复:Set an environment variable in git bash

1 个答案:

答案 0 :(得分:1)

我在你的剧本中看到两个要点:

首先,您在脚本中使用 sh 而不是 bash

#!/usr/bin/env sh
#!/usr/bin/env bash

我看到的第二点与对脚本中导出的理解有关。 当您执行脚本时,会创建一个新进程,因此您创建和导出的变量可用于此新进程和所有可能的子进程,而不是父进程,在本例中是您调用脚本的shell。 / p>

所以,你的变量可能正在创建,但是当脚本完成时它就会被破坏而你再也看不到它了。

希望它有所帮助!