我正在尝试通过一个小的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)
答案 0 :(得分:1)
我在你的剧本中看到两个要点:
首先,您在脚本中使用 sh 而不是 bash
#!/usr/bin/env sh
#!/usr/bin/env bash
我看到的第二点与对脚本中导出的理解有关。 当您执行脚本时,会创建一个新进程,因此您创建和导出的变量可用于此新进程和所有可能的子进程,而不是父进程,在本例中是您调用脚本的shell。 / p>
所以,你的变量可能正在创建,但是当脚本完成时它就会被破坏而你再也看不到它了。
希望它有所帮助!