在 OS X 上,我尝试使用林贡在启动时运行 shell 脚本。我有一个文件〜/desktop/_admin/boot/bootdocker.sh:
#!/bin/bash
boot2docker up
export DOCKER_HOST=tcp://192.177.59.103:2475
我的问题是,如果我使用以下任一命令从命令行运行脚本:
$bash bootdocker.sh
$./bootdocker.sh
$sh bootdocker.sh
他们运行第一个命令,但不运行导出 DOCKER_HOST 变量的第二个命令。
谁能看到我犯的错误吗?
答案1
如果您确实想$DOCKER_HOST
为您生成的所有 shell 进行设置,那么您需要将其合并到您的.bashrc
或.bash_profile
.
笔记:您尝试做的事情永远不会起作用,因为子进程无法增强其父进程的环境。
boot2docker
您可以像这样使用:
$ eval $(boot2docker shellinit)
动词shellinit
toboot2docker
是 v1.2.0 中的新动词,用于设置$DOCKER_HOST
.当你裸运行它时,它会产生以下输出:
$ boot2docker shellinit
export DOCKER_HOST=tcp://192.168.59.103:2375
答案2
第二个命令执行正确,但由于脚本运行在子shell(子进程)中,因此执行后返回的父shell不会继承环境变量。
答案3
为了得到 var$DOCKER_HOST
你应该跑
。 ./bootdocker.sh
那是
.
一个点,表示“像键入一样使用该文件”./bootdocker.sh
文件要在本地搜索。