在 Mac OS X 上启动时运行的 shell 脚本不会运行所有命令

在 Mac OS X 上启动时运行的 shell 脚本不会运行所有命令

在 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)

动词shellinittoboot2docker是 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文件要在本地搜索。

相关内容